所以这是我的代码,调查我的应用程序的模型中的更改。什么是建议替代使用while循环轮询
Thread refreshThread = new Thread(new Runnable() {
public void run() {
while(true)
{
if(TasksManager.isDirty())
{
TasksManager.refreshTasks(true);
panel.repaint();
}
}
}
});
refreshThread.start();
现在它是一个巨大的CPU猪。 下面是发生了什么的细节。
- TaskManager意识到已添加新内容。
- TaskManager将自己标记为脏。
- 当我的刷新线程发现它很脏时,它立即在模型和显示面板上执行刷新。
- 在RefreshTasks()结束时,模型再次被标记为干净。
我不希望TaskManager开始刷新,因为它没有对查看面板进行任何引用。
我有一个想法是使用condition.await()。当TaskManager被标记为脏时,TaskManager可以发出信号。但是我看到锁和条件齐头并进。在函数的开头不使用锁而使用条件可以吗?
你在做什么本质上是一样的:打电话给你最好的朋友。问他是否想给你打电话。如果答案是否定的,挂断电话。等一下。重复。 – Laf
我相信这是投票的隐喻定义。 – psykeron