[問題] Thread的wait 與notify...

看板java作者 (周大貓)時間15年前 (2008/12/03 15:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
這隻程式的流程為切到BoneView去畫圖,當中BoneView裡有thread在run 然後切換到別的頁面,switch裡面的current設成別的值.. 把BoneView的thread設成wait(),把run()裡面的run設成false讓run()停止不空轉... 之前又要把畫面切回BoneView讓他繼續畫圖,此時把BoneView的thread notify叫醒.. 此時圖就不再畫了... 推測是把thread wait()掉時,把run()裡面while迴圈的參數值設成false, 所以while終止把thread的生命也終止掉了!? 想不到有什麼方法可以使run()復活繼續跑...用t.start() 會出錯..囧z public class BoneView implements Runnable(){ ... Thread t = new Thread(); boolean run = true; public void run(){ //thread run 的部分 synchronized(this){ ... while(run){ ... } } } } ---程式runrunrun,然後把BoneView.t.wait() BoneView.run = false; 之後頁面又切回BoneView switch(current){ ... case bone: ... BoneView.run = true; BoneView.t.notify(); //復活thread //BoneView.t.notifyAll(); ... display.setCurrent(BoneView.getInstance()); //把畫面設定當前頁面 break; ... } 試過把display.setCurrent(BoneView.getInstance()); 換成display.setCurrent(new BoneView()); 就可以成功,但是好像不太符合效益!?每次都new一個... 所以只好重new了嗎 囧z 謝謝 -- 你有一種宅男的...神祕感 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.74.245.157 ※ 編輯: Gitangan 來自: 203.74.245.157 (12/03 15:07)
文章代碼(AID): #19DY-pKk (java)
文章代碼(AID): #19DY-pKk (java)