[J2SE] 請問Timer的執行方式

看板java作者 (jims)時間15年前 (2008/09/25 19:34), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
請問各位 我最近寫了一個東西 想要固定時間去檢查某server的狀態 該server那邊會傳回DONE代表正確 我的程式才會繼續後面的執行 但是我用以下的方式...程式卻是不間段的一直檢查 我明明是設定了60秒... 我貼上簡略的code..能否有那位版友可以看出端倪 import java.util.Timer; import java.util.TimerTask; int seconds = 60; .....略 //主要執行的部分 while(jg.getStatus()!= "DONE"){ checkStart(); } timer.cancel(); //////下面是checkStart()的方法 public void checkStart() { timer.schedule(new TimerTask() { public void run() { checkStatus(); } private void checkStatus() { System.out.println("Not yet!"); } }, seconds * 1000); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.194.41

09/25 20:00, , 1F
你的程式邏輯本身就怪怪的吧? while 會一直作...
09/25 20:00, 1F

09/25 20:06, , 2F
你雖然啟動Timer但main thread還是一直在while loop
09/25 20:06, 2F

09/26 00:08, , 3F
那請問我的主要程式那邊要如何讓目前狀態變成依照我設定
09/26 00:08, 3F

09/26 00:10, , 4F
的時間間隔去檢查server的狀態?
09/26 00:10, 4F

09/26 10:32, , 5F
把檢查伺服器狀態的部份寫在Timer裡面,並設定Timer週期性檢
09/26 10:32, 5F

09/26 10:33, , 6F
查->schedule(TimerTask task, long delay, long period)
09/26 10:33, 6F

09/26 10:36, , 7F
這樣一來就不需要使用到whileloop
09/26 10:36, 7F
文章代碼(AID): #18stSzWF (java)