jenkins tomcat熱部署,任務執行緒重複啟動的解決方法
阿新 • • 發佈:2019-02-19
專案使用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熱部署解除安裝類時自動停止之前的任務執行緒