JavaWeb 服务启动时,在后台启动加载一个线程。
2014-12-24 13:40
393 查看
JavaWeb 服务启动时,在后台启动加载一个线程。
目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet。
下面对这两种方法做一简单的介绍,(Mark一下,防止以后急用又忘记了):
监听(Listener)
首先,我们创建一个监听的类,继承ServletContextListener,如下:
@Override
public void init() throws ServletException {
Runnable runnable = new Runnable() {
public void run() {
//下面是线程里的相关处理代码
while (true) {
try {
//休眠时间
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
//启动这个线程
new Thread(runnable).start();
}
然后,在web.xml中配置如下:
<listener>
<listener-class>com.wxp.thread.MyListener</listener-class>
</listener>
OK,启动项目,我们可以在控制台看到隔时间段输出的文字内容。
使用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 com.ite.common.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 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中配置
[html] view plaincopy
OK。启动项目,依然可以看到如图所示:
其中,Listener的方式,该线程肯定是项目中首先启动的,优先于任何一个Servlet。而Servlet的方式,可以设置与其它Servlet启
动的顺序。如果有时候需要首先启动一个Servlet或者它们之间的启动顺序有特殊要求的时候,这个就很有作用了。
目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet。
下面对这两种方法做一简单的介绍,(Mark一下,防止以后急用又忘记了):
监听(Listener)
首先,我们创建一个监听的类,继承ServletContextListener,如下:
@Override
public void init() throws ServletException {
Runnable runnable = new Runnable() {
public void run() {
//下面是线程里的相关处理代码
while (true) {
try {
//休眠时间
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
//启动这个线程
new Thread(runnable).start();
}
然后,在web.xml中配置如下:
<listener>
<listener-class>com.wxp.thread.MyListener</listener-class>
</listener>
OK,启动项目,我们可以在控制台看到隔时间段输出的文字内容。
使用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 com.ite.common.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 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中配置
[html] view plaincopy
OK。启动项目,依然可以看到如图所示:
其中,Listener的方式,该线程肯定是项目中首先启动的,优先于任何一个Servlet。而Servlet的方式,可以设置与其它Servlet启
动的顺序。如果有时候需要首先启动一个Servlet或者它们之间的启动顺序有特殊要求的时候,这个就很有作用了。
相关文章推荐
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,后台启动加载一个线程
- 【学习笔记】JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb服务启动时,在后台启动加载一个线程进行Socket监听端口
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个类
- JavaWeb 服务启动时,在后台启动加载一个线程
- JavaWeb 服务启动时,在后台启动加载一个线程。
- JavaWeb 服务启动时,在后台启动加载一个线程