我有一個Runnable類,它在運行方法中使用無限while循環連續執行操作。有時用戶可能想要暫停/恢復操作。什麼是暫停線程的最佳方法。我有兩個想法:暫停線程的最佳方法?
FIRST
class Foo extends Runnable {
@Override
public void run() {
while(true) {
if(pauseFlag)
try{
Thread.sleep();
} catch(InterrruptedException ie) {//...}
}
}
第二
class Foo extends Runnable {
@Override
public void run() {
while(true) {
//pause if user wants to pause
while(pauseFlag);
}
}
}
- 在FIRST情況下,當我使用了Thread.sleep內循環NetBeans IDE的問題警告不要在內部循環中使用Thread.sleep。這是爲什麼?
- 在SECOND的情況下,當我使用無限空while循環,是一個性能開銷?
- 根據用戶的選擇,哪種方法(上面提到的或其他方法)應該更喜歡暫停正在執行的操作?
因爲它與同步無關,所以我不想使用wait/notify。
我不會編程一個'Thread'來讓它暫停。實施它等待一些事情。 –