我有一个长期运行的线程,使用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中停止应用程序后,线程仍会继续运行相关推荐

  1. java进程与线程_Java多线程笔记(零):进程、线程与通用概念

    前言 不积跬步,无以至千里:不积小流,无以成江海.在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程.线程以及相关的基础概念. 进程 通常,我们把一个程序的执行称为一个进程.反过来 ...

  2. java web 数据库操作_Java Web----Java Web的数据库操作(三)

    Java Web的数据库操作 前面介绍了JDBC技术和JDBC API及API的使用示例,下面详细介绍JDBC在Web中的应用. 四.JDBC在Java Web中的应用 通常情况下,Web程序操作数据 ...

  3. java web 发送消息_java集成WebSocket向指定用户发送消息

    一.WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通 ...

  4. java web数据库查询_Java Web开发之信息查询方式总结

    本文实例讲述了Java Web开发之信息查询方式总结.分享给大家供大家参考.具体如下: 这里介绍的查询方式有: ① 根据某个特定的字段查询: ② 在多个字段中查询: ③ 根据任意字段查询: ④ 任意字 ...

  5. java web 在线升级_java web远程升级

    java web远程升级 [2021-02-02 02:31:06]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

  6. java web项目测试_java web项目怎么测试?

    慕仰1329654 java web项目测试用Web的测试工具,如HtmlUnit,JWebUnit等.main()方法就可以测试,在main方法中获得connection对象将他输出就可以了.如果正 ...

  7. java web压缩过滤器_Java Web过滤器Filter(五)

    Filter概述 Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改.Filter提出滤镜链的概念,一个FilterChain包括多外Filter.客 ...

  8. java web开发技巧_java web开发技巧

    1 java web开发技巧 java学习没有诀窍,也没有捷径.只有脚踏实地学好java知识,把理论知识灵活运用实践,多学,多问,多操作,只要这样才能真正成为java编程高手.下面小编给大家说说jav ...

  9. 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 ...

最新文章

  1. Spring基础专题——第二章(注入Injection)
  2. AD域管理系列(6)-- 常见处理
  3. 决心开始写博,坚持!
  4. 关于 Session 的深入探讨
  5. simulink中s-function使用
  6. 海思Hi3516A(5)3D降噪
  7. 如何从云功能调用外部REST API
  8. C++Primer学习笔记:第5章 语句
  9. linux程序运行耗时shell脚本running_time.sh
  10. 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点
  11. 纪念一个曾经的产品(目录)
  12. 普通人学python有意义吗-自学Python编程的第一天----------来自苦逼的转行人
  13. SSH Config Editor Mac(SSH配置编辑器)V2.2
  14. # iOS项目——IM聊天工具(集成融云SDK)
  15. LogViewer_2
  16. mysql分别统计男性员工和女性员工人数_实验四 数据查询3-group by等
  17. 传奇世界修改服务器时间,《传奇世界手游时长版》测试结束公告
  18. Apache FTPServer本地部署FTP服务
  19. matlab求两点间距离,matlab如何求一个N*2的矩阵的任意两点间的距离?
  20. 乐鑫开发工具链之国内镜像gitee飞起

热门文章

  1. 扭曲效果 效率优化 GrapPass,CommandBuffer对比
  2. poj1833 排列
  3. mysqld.exe
  4. css表示屏幕宽度和高度
  5. mongodb count 导致不正确的数量(mongodb count 一个坑)
  6. 【Android】LMK 工作机制
  7. PHP中文分词的实现
  8. jenkins:集成sonar代码扫描+发送邮件
  9. 3177102203+3177102204
  10. Ubuntu时间管理方法