首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
JavaWeb 服务启动时,在后台老板启动加载一个线程
时间:
2015-04-15 10:55:08
阅读:
113
评论:
0
收藏:
0
[点我收藏+]
标签:
avaWeb 服务启动时,在后台启动加载一个线程
JavaWeb 服务启动时,在后台启动加载一个线程。
目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet。
下面对这两种方法做一简单的介绍,(Mark一下,防止以后急用又忘记了):
监听(Listener)
首先,我们创建一个监听的类,继承ServletContextListener,如下:
源码复制打印
package com.wxp.thread;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* Listener的方式在后台执行一线程
*
* @author Champion.Wong
*
*/
public class MyListener implements ServletContextListener {
private MyThread myThread;
public void contextDestroyed(ServletContextEvent e) {
if (myThread != null && myThread.isInterrupted()) {
myThread.interrupt();
}
}
public void contextInitialized(ServletContextEvent e) {
String str = null;
if (str == null && myThread == null) {
myThread = new MyThread();
myThread.start(); // servlet 上下文初始化时启动 socket
}
}
}
/**
* 自定义一个 Class 线程类继承自线程类,重写 run() 方法,用于从后台获取并处理数据
*
* @author Champion.Wong
*
*/
class MyThread extends Thread {
public void run() {
while (!this.isInterrupted()) {// 线程未中断执行循环
try {
Thread.sleep(2000); //每隔2000ms执行一次
} catch (InterruptedException e) {
e.printStackTrace();
}
// ------------------ 开始执行 ---------------------------
System.out.println("____FUCK TIME:" + System.currentTimeMillis());
}
}
}
然后,在web.xml中配置如下:
源码复制打印
<listener$amp;>amp;$nbsp;
<listener-class>com.wxp.thread.MyListener</listener-class$amp;>amp;$nbsp;
</listener$amp;>amp;$nbsp;
OK!
2.使用Servlet,在项目启动的时候启动它。
首先,创建一个Servlet,继承HttpServlet
package com.wxp.thread;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import comon.Constants;
public class MyServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private MyThread1 myThread1;
public MyServlet(){
}
public void init(){
String str = null;
if (str == null && myThread1 == null) {
myThread1 = new MyThread1();
myThread1.start(); // servlet 上下文初始化时启动 socket
}
}
public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException{
}
public void destory(){
if (myThread1 != null && myThread1.isInterrupted()) {
myThread1.interrupt();
}
}
}
/**
* 自定义一个 Class 线程类继承自线程类,重写 run() 方法,用于从后台获取并处理数据
*
* @author Champion.Wong
*
*/
class MyThread1 extends Thread {
public void run() {
while (!this.isInterrupted()) {// 线程未中断执行循环
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// ------------------ 开始执行 ---------------------------
System.out.println("____FUCK TIME:" + System.currentTimeMillis());
}
}
}
然后,在web.xml中配置
<!-- LISTENER FOR THREAD -->
<servlet>
<servlet-name>MyListener</servlet-name>
<servlet-class>com.ite.wxp.MyServlet</servlet-class>
<load-on-startup>9</load-on-startup$amp;>amp;$lt;!-- 数字越小,启动的优先级越高,必须大于0 -->
</servlet>
<servlet-mapping>
<servlet-name>MyListener</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
OK.启动项目,预期效果!
本问题标题:
JavaWeb 服务启动时,在后台老板启动加载一个线程
本问题地址:
http://www.educity.cn/wenda/116600.html
JavaWeb 服务启动时,在后台老板启动加载一个线程
标签:
原文地址:http://www.cnblogs.com/simith/p/4427656.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!