作者jimmyoic (jimmyoic)
看板java
標題[J2SE] 連續使用Timer
時間Sat Jun 29 21:07:56 2013
想請問一下
有沒有可能連續使用兩個timer 但讓後者等待前者做完再開始呢?
比方說
timer = new Timer(swapSpeed,new moveListener(this, block));
timer.start();
我讓timer 1 先做出movelistener裡的事 (listener裡在結束時call timer.stop())
然後
timer = new Timer(5,new deleteListener(block,rowlocal,collocal));
timer.start();
第二個timer在第一個timer做完以後才開始運作
然後簡單敘述一下會有這個需求 是因為要讓JPanel上面的圖片有移動的效果
需要讓圖片在固定夠長的間隔裡移動 然後不斷的refresh
不過我目前有兩個效果需要連續show出來 所以需要用到兩次timer
自己試了很久
想說讓main先檔住 在timer1 start以後
用一個while(timer.isRunning())
;
擋在第二個timer前面
但是程式就會陷入無限迴圈 就是第一個timer call到stop()以後 迴圈判斷
timer.isRunning() 還是true
也試過丟一個flag 到listener裡面 如果工作執行完以後傳出來 也是失敗
自己還不是很熟timer跟同步這塊
想請教一下有沒有適當的方法可以解決這個問題
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 106.1.95.77
→ TsaiCF:參考看看 java.util.concurrent.Executors 06/29 21:51
推 sbrhsieh:1st timer's callback 完事後主動 start 2nd timer 不行 06/29 22:16
推 sbrhsieh:嗎?moveListener stop time1 then start timer2. 06/29 22:20
→ jimmyoic:可以 只是這樣兩個Method會綁在一起 之後還有其他要修 06/29 22:24
推 cuteclare:沒有啥作不到的~只是不要拘泥於javax.swing.Timer的話 06/30 00:48
推 ktpt1412:在timer1 listener加timer1.stop();timer2.start();呢? 07/06 21:14
→ ktpt1412:這是小弟之前的寫法 不是很漂亮就是了 07/06 21:17
推 cowbaying:用thead sleep會不會簡單一點? 07/10 10:03