解决jenkins tomcat热部署,任务线程重复启动的方法
2018-03-21 21:23:24
1071次阅读
0个评论
项目使用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热部署卸载类时自动停止之前的任务线程
00
相关话题
- Spring Boot启动时执行指定方法
- DateTimeFormatter替换SimpleDateFormat解决线程安全问题
- MyEclipse启动发生"An error has occurred.See the log file "解决
- Spring启动后获取所有指定注解的Bean
- Springboot使用外部Tomcat
- seaweedfs在windows上部署参考
- vue 3 的watchEffect 使用方法
- JS执行耗时任务Loading效果
- ConcurrentSkipListSet线程安全有序集合
- CentOS 8.x系统停止维护yum无法使用解决方法
- 将footer固定在页面底部的实现方法
- 阿里云CentOS 8.x系统yum报404的解决方法(Errors during downloading metadata for repository 'appstream':
- spring boot拦截器验证token防止表单重复提交
- Vue3+Vite+Nginx 二级路径部署
- 解决kindeditor中onkeydown不执行的问题