作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 Manager
管理几个 FileSystems
(我自己的抽象)。这些 FileSystems
之一可能有一段时间没有接收到数据,因此我想将其闲置。每当 Manager
最终接收到数据时,它应该唤醒相应的空闲 FileSystem
。现在我正在使用 wait()
和 notify()
,我得到了我想要的结果。
但是,空闲 FileSystem
的全部意义在于消耗更少的资源。我想知道是否只 interrupt()
Thread
然后在激活 FileSystem
时创建一个新线程是否更好(可能需要十分钟或更长时间才能收到新数据)?等待不会占用资源吗?
这是我的 Runnable
的设置。
public class FileSystem implements Runnable
{
public FileSystem()
{
// do stuff
startTimer()
}
@Override
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
// do stuff
}
}
//public void startTimer()
//{
// new Thread(new Runnable()
// {
// @Override
// public void run()
// {
// // do something
// }
// }).start();
//}
// other methods
}
最佳答案
这取决于。如果读取操作会创建大量资源并且发生频率很高,那么最好等待文件。但是如果读取线程很轻并且经常闲置,那么最好创建新线程。
关于java - interrupt() 空闲线程而不是 wait()/notify() 会更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54081482/
我是一名优秀的程序员,十分优秀!