java web结束线程_java – 即使在Websphere中停止应用程序后,线程仍会继续运行
我有一个长期运行的线程,使用org.
springframework.scheduling.commonj.WorkManagerTaskExecutor创建
使用
Spring并在Websphere Application Server 8中运行.
问题是即使应用程序已停止,此线程仍会继续运行.该线程也需要停止,但它没有发生.我甚至尝试使用Thread.currentThread().isInterrupted()来检查当前线程是否被中断但它总是返回false.所以没有办法通过我的代码知道线程应该继续运行还是停止.
这是我对WorkManagerTaskExecutor的弹簧配置:
线程正在以这种方式执行:
Thread t = new EmailReaderThread(email);
workManagerTaskExecutor.execute(t);
>我错过了什么?
>我能做什么,以便每当应用程序停止时,应用程序的线程(由应用程序生成的线程)也会停止?
我认为这不被视为非托管线程,因为我使用适当的WorkManager注册线程,容器由JNDI作为资源公开.
更新:
这是创建Thread的代码.
@Service
@Transactional
public class SmsServiceHypermedia implements SmsService {
@Autowired
private WorkManagerTaskExecutor workManagerTaskExecutor;
public SmsServiceHypermedia() {
createEmailReaderThread();
}
private void createEmailReaderThread() {
log.debug("Generating Email Reader Threads...");
Email email = getDefaultEmail(); //obtain the default Email object, not important for the problem.
EmailReaderThread r = new EmailReaderThread(email);
workManagerTaskExecutor.execute(r);
}
private class EmailReaderThread extends Thread {
private Email email;
private Session session;
public EmailReaderThread(Email email) {
this.email = email;
}
@Override
public void run() {
readEmails();
}
public void readEmails() {
final long delay = 30 * 1000; //delay between message poll.
log.debug("Starting to read emails for email: " + email.getAddress());
while(!Thread.currentThread().isInterrupted()) {
try {
log.debug("Current session: " + session);
Store store = session.getStore();
log.debug("Connecting using session: " + session);
store.connect();
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
javax.mail.Message[] messages = inbox.search(
new FlagTerm(new Flags(Flags.Flag.SEEN), false));
for (javax.mail.Message message : messages) {
//Do something with the message
}
inbox.close(true);
store.close();
block(delay);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
//I know this could be implemented by calling Thread.sleep() is just that I ran out of options so I also tried it this way.
private void block(long millis) {
final long endTime = System.currentTimeMillis() + millis;
log.debug("Blocking for this amount of time: " + millis + " ms");
while (System.currentTimeMillis() < endTime) {
}
log.debug("End of blocking.");
}
}
}
java web结束线程_java – 即使在Websphere中停止应用程序后,线程仍会继续运行相关推荐
- java进程与线程_Java多线程笔记(零):进程、线程与通用概念
前言 不积跬步,无以至千里:不积小流,无以成江海.在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程.线程以及相关的基础概念. 进程 通常,我们把一个程序的执行称为一个进程.反过来 ...
- java web 数据库操作_Java Web----Java Web的数据库操作(三)
Java Web的数据库操作 前面介绍了JDBC技术和JDBC API及API的使用示例,下面详细介绍JDBC在Web中的应用. 四.JDBC在Java Web中的应用 通常情况下,Web程序操作数据 ...
- java web 发送消息_java集成WebSocket向指定用户发送消息
一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...
- java web数据库查询_Java Web开发之信息查询方式总结
本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字 ...
- java web 在线升级_java web远程升级
java web远程升级 [2021-02-02 02:31:06] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...
- java web项目测试_java web项目怎么测试?
慕仰1329654 java web项目测试用Web的测试工具,如HtmlUnit,JWebUnit等.main()方法就可以测试,在main方法中获得connection对象将他输出就可以了.如果正 ...
- java web压缩过滤器_Java Web过滤器Filter(五)
Filter概述 Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改.Filter提出滤镜链的概念,一个FilterChain包括多外Filter.客 ...
- java web开发技巧_java web开发技巧
1 java web开发技巧 java学习没有诀窍,也没有捷径.只有脚踏实地学好java知识,把理论知识灵活运用实践,多学,多问,多操作,只要这样才能真正成为java编程高手.下面小编给大家说说jav ...
- java web应用开发_Java Web应用开发基础
模块1 Java Web应用开发概述 1.1 Web基础知识 1.1.1 Web应用及其开发 1.1.2 动态网页 1.1.3 B/S结构 1.1.4 JSP简介 1.2 创建第一个Web项目 1.2 ...
最新文章
- Spring基础专题——第二章(注入Injection)
- AD域管理系列(6)-- 常见处理
- 决心开始写博,坚持!
- 关于 Session 的深入探讨
- simulink中s-function使用
- 海思Hi3516A(5)3D降噪
- 如何从云功能调用外部REST API
- C++Primer学习笔记:第5章 语句
- linux程序运行耗时shell脚本running_time.sh
- 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点
- 纪念一个曾经的产品(目录)
- 普通人学python有意义吗-自学Python编程的第一天----------来自苦逼的转行人
- SSH Config Editor Mac(SSH配置编辑器)V2.2
- # iOS项目——IM聊天工具(集成融云SDK)
- LogViewer_2
- mysql分别统计男性员工和女性员工人数_实验四 数据查询3-group by等
- 传奇世界修改服务器时间,《传奇世界手游时长版》测试结束公告
- Apache FTPServer本地部署FTP服务
- matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?
- 乐鑫开发工具链之国内镜像gitee飞起