簡體   English   中英

正常停止正在運行的Java程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM