您好,登錄后才能下訂單哦!
Java程序如何實現(xiàn)自動重啟?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
要讓一個java程序自動重啟還真不容易的,重啟分兩步,首先是結(jié)束程序,這個簡單,只要運(yùn)行System.exit()就可以了。然后是啟動,這個就難了,這個時候程序都已經(jīng)結(jié)束了,就像一個人死了就不可能再自己站起來,怎么辦呢?讓別人幫他扶起來,幸運(yùn)的是,我也有這樣的條件,我要重啟的那個程序并不孤獨(dú),還有另一個java程序和它一起在運(yùn)行,我只要讓運(yùn)行著的那個程序來啟動它就可以了。
但運(yùn)行著的那個程序它怎么知道要關(guān)閉的那個程序在什么時候關(guān)閉呢,如果不知道就不能貿(mào)然啟動。只有讓要關(guān)閉的那個程序在自殺前先通知一下了,就是發(fā)個信息給運(yùn)行著的那個程序,告訴它,我要自殺了,你準(zhǔn)備重啟我吧。好了,這個也解決了,可以重啟了。
但第二個問題又來了,怎么啟動呢,一般java程序都是用批處理來啟動的,但在程序里像這樣調(diào)用批處理文件卻行不通:
try { Runtime.getRuntime().exec("要啟動的批處理.bat"); } catch(Exception e) { e.printStackTrace(); }
在java程序里只能調(diào)用可執(zhí)行程序來運(yùn)行,批處理是不能運(yùn)行的。怎么辦?沒辦法了嗎?找到一個軟件VisualBat,用它把批處理編譯成可執(zhí)行程序,這樣就可以了。
好了,現(xiàn)在可以關(guān)閉,也可以啟動了,但還有一個問題:我要一天啟動一次而且還要在下午5點(diǎn)時重啟,這個要考慮一下了,最后這樣做,用兩個變量,一個記下程序啟動時的日期,一個記下當(dāng)前是幾點(diǎn),只要所記的日期不是今天而且現(xiàn)在又是5點(diǎn),就可以重啟了。
本以為完成了,但程序閃了一下就不見了。仔細(xì)想了一下,可能結(jié)束程序與啟動程序間隔時間太短了,舊程序還沒有完全釋放端口,新程序就來搶端口了,由于新程序沒搶到端口,于是就自己關(guān)閉了。這個也簡單,只要在啟動前先等一等,Thread.sleep(5000) ,等上5秒,讓端口完全釋放,這時再啟動就可以了。確實如此,這個問題就這樣解決了。
看完上述內(nèi)容,你們掌握J(rèn)ava程序如何實現(xiàn)自動重啟的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。