[問題] 如何讓Thread暫停?

看板java作者 (阿翔)時間12年前 (2013/06/25 14:16), 編輯推噓3(308)
留言11則, 6人參與, 最新討論串1/1
最近在寫程式遇到一些狀況 我宣告了兩個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)

06/25 14:27, , 1F
不建議使用但是有告訴你要改用啥吧?
06/25 14:27, 1F

06/25 18:53, , 2F
java.util.concurrent.locks.Lock ?
06/25 18:53, 2F

06/25 19:32, , 3F
謝謝各位,我在研究看看
06/25 19:32, 3F

06/25 20:09, , 4F
orz 用 lock其實不能讓thread停止 只是可以達成原po要的
06/25 20:09, 4F

06/25 20:25, , 5F
two-phase termination模式~
06/25 20:25, 5F

06/25 20:27, , 6F
在你的thread加一個terminal註記..標明什麼時候要中止..
06/25 20:27, 6F

06/25 21:31, , 7F
放個object去wait(),要resume時再notify()
06/25 21:31, 7F

06/25 22:38, , 8F
謝謝各位,我把標題的停止改成暫停好了
06/25 22:38, 8F
※ 編輯: goldking521 來自: 122.118.2.139 (06/25 22:39)

06/25 22:40, , 9F
然後看了一下,我的interrupt()會沒用,應該是我while
06/25 22:40, 9F

06/25 22:43, , 10F
迴圈裡有sleep的關係,可能我誤會interrupt()的用法了
06/25 22:43, 10F

06/27 23:24, , 11F
放個lock然後wait/notify
06/27 23:24, 11F
文章代碼(AID): #1HoJNPRg (java)