我见过两种获取和处置资源的方式。任何一个:
Resource resource = getResource();
try { /* do something with resource */ }
finally { resource.close(); }
or:
Resource resource = null;
try { resource = getResource(); /* do something with resource */ }
finally { if (resource != null) resource.close(); }
我想知道哪种风格更可取。第一个避免了if
条件,而第二个(我认为)处理分配之后但进入之前线程中止的情况try
堵塞。这些风格相对于彼此还有哪些其他优点和缺点?我应该优先使用哪一个?
在C#中,只需使用using语句:
using (Resource resource = GetResource())
{
/* Do something */
}
这是清理资源的惯用方法,并依赖于有问题的资源来实现IDisposable
界面。 (Java 现在有一个类似的 try-with-resources 语句,用于资源实现AutoCloseable
.)
Java 中在赋值和进入 try 块之间不存在线程中止的风险 - 中止仅发生在睡眠和等待期间。编辑:我实际上在规范中找不到这个,这有点令人担忧。唔。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)