那么暂停线程的最佳方法是什么?到目前为止我有这样的事情:在线程的主循环中,第一行是:
while (paused == true) {
Thread.sleep(refreshRate);
}
它的工作原理很好。我可以按P键改变暂停状态。但我正在寻找更好,更专业的解决方案。我知道重入锁和条件。所以我可以在线程上使用它们。然后预测P将释放singalAll()方法。但是由于我在这个帖子中并不真正需要的同步,它会减慢我的应用程序。那么解决它的最佳,最佳方式是什么?也许使用同步块?
synchronized (new Object()) {
}
然后只是部分代码将被同步。或者也许我应该使用信号量?
答案 0 :(得分:1)
您应该使用等待/通知方案,例如:
答案 1 :(得分:0)
使用wait()和notify()
Object waitLock = new Object();
//...
// waiter Thread
synchronized (waitLock) {
waitLock.wait();
}
// wake up with
waitLock.notify();
答案 2 :(得分:0)
使用我之前发布的PauseableThread来回答与您类似的问题。
它使用ReadWriteLock
来实现,因此您没有同步的开销。