作者goldking521 (阿翔)
看板java
標題[問題] 如何讓Thread暫停?
時間Tue Jun 25 14:16:54 2013
最近在寫程式遇到一些狀況
我宣告了兩個RadioButton(簡稱RB),我想要RB1被按下時,啟動Thread t1,
然後按下RB2時,暫停t1,如果之後又按下RB1,再恢復Thread t1
<code如下>
=================t1的部分===========
public void run(){
while(!RB2.isSelected()){
//t1執行緒要做的事
}
}
=================RB1的部分==============
RB1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
t1.start();
}
});
因為看java的文件,stop()、suspend()和resume()已經不建議使用,然後下interrupt()
,t1還是繼續執行,所以想使用while迴圈來暫停thread,不過似乎沒有成功
,想請問是否有大大可以指導一下,或是給關鍵字去google?謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.14.241
※ 編輯: goldking521 來自: 140.120.14.241 (06/25 14:27)
推 PsMonkey:不建議使用但是有告訴你要改用啥吧? 06/25 14:27
推 cuteclare:java.util.concurrent.locks.Lock ? 06/25 18:53
→ goldking521:謝謝各位,我在研究看看 06/25 19:32
推 cuteclare:orz 用 lock其實不能讓thread停止 只是可以達成原po要的 06/25 20:09
→ jej:two-phase termination模式~ 06/25 20:25
→ jej:在你的thread加一個terminal註記..標明什麼時候要中止.. 06/25 20:27
→ nopeace:放個object去wait(),要resume時再notify() 06/25 21:31
→ goldking521:謝謝各位,我把標題的停止改成暫停好了 06/25 22:38
※ 編輯: goldking521 來自: 122.118.2.139 (06/25 22:39)
→ goldking521:然後看了一下,我的interrupt()會沒用,應該是我while 06/25 22:40
→ goldking521:迴圈裡有sleep的關係,可能我誤會interrupt()的用法了 06/25 22:43
→ flowwinds:放個lock然後wait/notify 06/27 23:24