gpt4 book ai didi

java - interrupt() 空闲线程而不是 wait()/notify() 会更好吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:13 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com