Zo7*_*o72 34 java multithreading
在某些情况下,我们大多数人写这样的事情:
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
; // do nothing
}
Run Code Online (Sandbox Code Playgroud)
无论是对还是错,只在某些测试工具中可以接受,这不是我的观点.我的观点是,相同的代码可以更简洁地编写,如:
LockSupport.parkNanos(2000* 1000000);
Run Code Online (Sandbox Code Playgroud)
我有什么理由支持一种方法而不是另一种方法.
Jon*_*eet 16
可读性:Thread.sleep具有非常直观的含义.您如何描述(对另一位开发人员)您的使用LockSupport.parkNanos?如果这样的描述主要是由"我想目前的线程来睡觉 ",那么肯定Thread.sleep是更具描述性的.
简洁来自缺乏中断处理 - 因此如果需要,创建一个包装器方法来执行此操作,将异常传播为RuntimeException.哎呀,如果你正在创建一个包装器方法,你可以使用任何一种实现,虽然另一个线程当然可以解开你的"休眠"线程,就像它可以中断它一样...
San*_*rma 14
该方法的文档parkNanos提供了该方法可以返回的条件.其中一个条件是:虚假(即无缘无故)回叫.所以基本上可以使用它,如果你不介意虚假的唤醒和一些其他线程"解除"等待线程的考虑.当然,乔恩的评论几乎指出了选择优先于另一个的理由.
| 归档时间: |
|
| 查看次数: |
12385 次 |
| 最近记录: |