-
java web项目这么用线程对么?3
在系统启动的时候创建了一个线程并且start。我想在系统关闭,也就是关闭Tomcat的时候停止这个线程。
class CheckThread extends Thread{ private boolean live = true; public boolean isLive() { return live; } public void setLive(boolean live) { this.live = live; } @Override public void run() { while(live){ System.out.println("work"); try { Thread.sleep(30000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
public class SystemContextListener implements ServletContextListener { private CheckThread thread = null; @Override public void contextDestroyed(ServletContextEvent arg0) { System.out.println("应用关闭"); thread.setAppIsAlive(false); } @Override public void contextInitialized(ServletContextEvent e) { ServletContext ctx = e.getServletContext(); ctx.setAttribute("onlineUser", new ConcurrentHashMap<String, Date>()); CheckThread checkThread= (CheckThread) WebApplicationContextUtils.getWebApplicationContext(ctx).getBean("CheckThread"); onlineUserCheckThread.setName("checkThread"); thread = checkThread; thread.start(); } }
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("应用关闭");
thread.setAppIsAlive(false);
}
通过线程自己的成员变量做判断,这么写能保证线程在tomcat关闭时 被停止么?
问题补充:<div class="quote_title">OpenMind 写道</div><div class="quote_div">这样玩线程是可以的,但如楼上所说,在shutdown时,你可能需要等待你的线程运行完毕以后再继续destroy其他的资源,比如,你可以这样: <br /><pre name="code" class="java">
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("应用关闭");
thread.setAppIsAlive(false);
thread.join();
}
</pre></div> <br /> <br />除了join(),有更好的解决方法么,你遇到过类似的问题么?2012年2月16日 08:49
3个答案 按时间排序 按投票排序
-
这样玩线程是可以的,但如楼上所说,在shutdown时,你可能需要等待你的线程运行完毕以后再继续destroy其他的资源,比如,你可以这样:
public void contextDestroyed(ServletContextEvent arg0) { System.out.println("应用关闭"); thread.setAppIsAlive(false); thread.join(); }
2012年2月16日 12:26
-
不能,tomcat关闭时,已经没有足够时间运行你的程序了,除非执行很快。况且你的程序如果正处于一个很长的运行过程呢。
或者关闭线程需要很长的处理时间呢。2012年2月16日 09:37
相关推荐
设主键: Alter table student add primary key (sno); 删除主键: Alter table student drop primary key; 删除表: Drop table student; 设外键: Alter table score add foreign key(列名) references 表名...
通过在Java Web应用中简单集成,JavaMelody就能提供包括请求处理时间、SQL查询、内存使用、线程信息、异常跟踪等多种关键性能指标的可视化报告。 首先,JavaMelody的核心功能在于其丰富的监控指标。它能够监控HTTP...
java 多线程和服务器的源码,用于web服务器的java多线程控制
这是一个基于Java技术的Web项目,主要关注的是企业事务管理系统的实现。这个系统源码的提供,对于学习和理解Java在企业级应用中的实践具有很高的价值。以下将详细讲解与Java Web项目相关的知识点。 1. **Java编程...
9. **性能优化**:Java Web项目3可能涉及到性能优化,包括缓存策略(如使用 Ehcache 或 Redis)、数据库查询优化、异步处理和负载均衡等,以确保应用在高并发场景下的稳定性和响应速度。 10. **版本控制与协作**:...
"MultiThreadedWebServer.java"是Web服务器的核心,它使用多线程技术来处理并发的客户端请求。在Java中,多线程可以通过继承Thread类或实现Runnable接口来实现。通常,服务器会创建一个新的线程来处理每个新到来的...
在深入体验Java+Web项目开发的过程中,我们将会探讨一系列关键知识点,这些都是构建高效、稳定且可扩展的Web应用程序的基础。本开发日记将分为几个部分,逐一解析这些技术要点。 首先,Java作为后端开发的主要语言...
Java Web项目实战大全源码搜索引擎是一个综合性的学习资源,涵盖了Java Web开发中的重要模块,特别是搜索引擎的实现。这个项目旨在帮助开发者深入理解如何在Web应用中集成和构建搜索引擎功能,以便用户可以高效地...
Java多线程在Web项目中的应用是提高系统性能和响应速度的重要手段。本文主要探讨了在Java平台上如何开发和使用多线程,特别是在Web应用程序中的实践。 首先,Java语言提供了内置的支持多线程的能力,允许开发者创建...
【Java Web服务器基础】 在IT领域,Java Web服务器是一种用于处理HTTP请求并返回Web内容的软件。...此外,此项目也提供了一个动手实践的机会,有助于提高对HTTP协议、Java多线程以及服务器端编程的理解。
war包已打包好 需要更改 web.config 里面的 ip 以及端口号 以及数据库 以及admin里面的js 有个url.js ...4.java发送邮箱 2022.3.27 (email.jar java类) 5.登录修改密码 邮箱找回 2022.3.28(密码进行md5加
【标签】"java"提示我们,这些项目是用Java语言编写的,Java在Web开发领域有着广泛的应用,尤其在企业级应用中,因为它提供了强大的类型检查、垃圾回收以及多线程支持。 【压缩包子文件的文件名称列表】列出了几个...
Spring Boot非Web项目运行的方法 Spring Boot是一个基于Java的开源框架,主要用于构建基于...本文主要介绍了Spring Boot非Web项目运行的相关资料,通过示例代码对大家学习或者使用Spring Boot具有一定的参考学习价值。
这个"JAVA WEB 项目 Java技术文档"很可能是对一个具体项目开发过程的记录,涵盖了从基础知识到进阶概念的全面讲解。让我们深入探讨一下其中可能包含的知识点。 1. **Java基础**: - **语法基础**:包括类、对象、...
Java Web 多线程下载器是一种利用Java编程语言实现的高效下载工具,它通过将大文件分割成多个部分,同时启动多个线程进行下载,从而显著提高了文件下载速度。这样的设计充分利用了网络带宽和系统资源,尤其在处理大...
Java的线程和Java Applet是Java编程中的两个重要概念,它们分别涉及并发执行和Web应用程序的执行环境。 **线程**在Java中是程序执行的最小单元,它允许程序在同一时间执行多个任务。Java内置对多线程的支持,使得...
【标题】基于多线程的Web服务器Java源码解析 在Web开发领域,服务器是至关重要的组成部分,它们负责处理客户端的HTTP请求并返回相应的HTTP响应。本篇文章将深入探讨一个基于多线程的Web服务器Java源码,帮助你理解...
Java面向对象与线程与Mysql与WEB基础面试题总结,其中总结了一部分高频面试题
《Java Web应用开发项目教程》是一本以实践为导向的教程,旨在帮助读者深入理解并掌握Java Web开发技术。教程通过完整的案例,采用模块化的教学方式,将复杂的Web应用开发过程分解为可操作的步骤,逐步引导学习者...
通过学习和理解这个“Java Web 项目-在线考试系统”,开发者不仅可以深入理解JAVA和JAVAWEB技术,还能掌握项目开发流程、数据库设计、安全性实践等多个方面,为今后的Web开发工作打下坚实基础。