Java:LockSupport.parkNanos 与 Thread.sleep(...)

标签 java multithreading

在某些情况下,我们大多数人都会这样写:

try {
   Thread.sleep(2000); 
} catch (InterruptedException e) {
   ; // do nothing
}

是否正确或错误,仅在某些测试工具中可接受,不是我的观点。 我的观点是,同样的代码可以写得更简洁,如下:

  LockSupport.parkNanos(2000* 1000000);

有什么理由让我偏爱一种方法而不是另一种方法。

最佳答案

可读性:Thread.sleep 有一个非常直观的含义。您将如何描述(向其他开发人员)您对 LockSupport.parkNanos 的使用?如果该描述主要包含“我希望当前 线程 sleep ”,那么 Thread.sleep 肯定更具描述性。

简洁性来自于缺少中断处理——所以如果你愿意,可以创建一个包装器方法来执行此操作,它将异常作为 RuntimeException 传播。哎呀,如果你正在创建一个包装方法,你可以使用任何一种实现,尽管另一个线程当然可以unpark你的“ sleep ”线程,就像它可以中断它一样......

关于Java:LockSupport.parkNanos 与 Thread.sleep(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397881/

相关文章:

java - 多生产者多消费者多线程Java

java - Spring启动: How to exclude static files from building . war文件?

java - WebView白屏怎么解决?

java - 使用 twilio : The API package 'urlfetch' or call 'Fetch()' was not found 发送短信

c# - 需要帮助在我的 TreeView 中实现多线程(C#、WPF)

c++ - 从主线程向工作线程发出信号的问题

java - ListView 上的可点击图像

java - 运行 mvn install 会导致 OOM 错误

c++ - 调整原子 vector 的大小?

ios - 如何修复 Xcode 中的线程错误?