[英]Stopping a running java program gracefully
我一直在尋找一種將命令發送到正在運行的Java程序的方法,但是大多數帖子建議實現listener
或使用Jetty
(或其他服務器)實現包裝程序。
有沒有一種方法,而無需添加其他依賴項?
場景是,我有一個Java程序,它將無限期運行,並且將產生一些正在運行的線程。 我希望能夠在需要關閉腳本的情況下運行腳本以將其停止,就像關閉腳本服務器通常具有的功能一樣。 這將使我能夠處理程序中的關閉過程。 該程序在linux環境中運行。
謝謝。
實現了關閉掛鈎,到目前為止看起來還不錯。 實現代碼:
final Thread mainThread = Thread.currentThread();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
logger.info("Shut down detected. Setting isRunning to false.");
if(processors != null && !processors.isEmpty()){
for (Iterator<IProcessor> iterator = processors.iterator(); iterator.hasNext();) {
IProcessor iProcessor = (IProcessor) iterator.next();
iProcessor.setIsRunning(false);
try {
iProcessor.closeConnection();
} catch (SQLException e1) {
logger.error("Error closing connection",e1);
}
}
}
try {
mainThread.join();
} catch (InterruptedException e) {
logger.error("Error while joining mainthread to shutdown hook",e);
}
}
});
謝謝你的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.