1. 程式人生 > >jenkins tomcat熱部署,任務執行緒重複啟動的解決方法

jenkins tomcat熱部署,任務執行緒重複啟動的解決方法

專案使用jenkins熱部署釋出,導致web工程中的任務佇列重複啟動,即重新發布的工程自己啟動了自己的任務執行緒,但之前老專案的任務執行緒沒有被終止
工程任務執行緒如下所示:

@PostConstruct
public void messageListener() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            while(true){
                ......
           }
        }
    }, "任務執行緒"
).start(); }

解決方法很簡單,只需要在bean銷燬的方法中停止這個執行緒即可,程式碼如下:

/**
 * 控制執行緒是否繼續執行
 */
private volatile boolean isRunning = true;

/**
 * 監聽訊息佇列,處理待發送的訊息
 */
@PostConstruct
public void messageListener() {
    thread = new Thread(new Runnable() {
        @Override
        public void run() {
            while (isRunning) {
                ......
            }
        }
    }, "任務執行緒"
); thread.start(); } @PreDestroy public void stop() { isRunning = false; if (thread != null && thread.isAlive()) { thread.interrupt(); } }

以上即可在jenkins熱部署解除安裝類時自動停止之前的任務執行緒