JavaWeb 项目时 启动一个线程
介紹:最近在項目中,需要在啟動項目時啟動一個線程進行業務操作,在網上查找資料后準備采取監聽的實現方式。
1首先創建一個類MqMsgTransformationListener 集成ServletContextListener
代碼:
????????????package com.enter.net.quartz;?
?import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.enter.net.fhbusiness.monitor.service.MqMsgTransformationService;
import com.enter.net.frame.util.SpringUtils;
import com.enter.net.frame.util.log.LogUtil;?
?
/**
* Listener的方式在后臺執行一線程
*?
* @author ll
*?
*/?
public class MqMsgTransformationListener implements ServletContextListener {?
? ? private MqMsgTransformationThread mqMsgTransformationThread;?
?
? ? public void contextDestroyed(ServletContextEvent e) {?
? ? ? ? if (mqMsgTransformationThread != null && mqMsgTransformationThread.isInterrupted()) {?
? ? ? ? mqMsgTransformationThread.interrupt();?
? ? ? ? }?
? ? }?
?
? ? public void contextInitialized(ServletContextEvent e) {?
? ? ? ? String str = null;?
? ? ? ? if (str == null && mqMsgTransformationThread == null) {?
? ? ? ? mqMsgTransformationThread = new MqMsgTransformationThread();?
? ? ? ? mqMsgTransformationThread.start(); // servlet 上下文初始化時啟動 socket?
? ? ? ? }?
? ? }?
}?
2啟用一個線程類 繼承?Thread 需要重寫run()方法 可以書寫自己的業務邏輯
/**
* 自定義一個 Class 線程類繼承自線程類,重寫 run() 方法,用于從后臺獲取并處理數據
*?
* @author ll
*?
*/?
class MqMsgTransformationThread extends Thread {?
private MqMsgTransformationService? mqMsgTransformationService = (MqMsgTransformationService) SpringUtils.getBean("mqMsgTransformationService");
? ? public void run() {?
? ? ? ? while (!this.isInterrupted()) {// 線程未中斷執行循環?
? ? ? ? ? ? try {?
? ? ? ? ? ? mqMsgTransformationService.MqMsgTransformation();
? ? ? ? ? ? ? ? Thread.sleep(2000); //每隔2000ms執行一次?
? ? ? ? ? ? } catch (InterruptedException e) {?
? ? ? ? ? ? LogUtil.error("線程出現錯誤"+e.getMessage(),e);
? ? ? ? ? ? ? ? e.printStackTrace();?
? ? ? ? ? ? }?
? ? ? ? ? ? ?
//? ? ? ? ? ?------------------ 開始執行 ---------------------------?
? ? ? ? ? ? System.out.println("開始執行____FUCK TIME:" + System.currentTimeMillis());?
? ? ? ? }?
? ? }?
}??
3 最后在web.xml 中增加監聽器。
<listener>?
? ? <listener-class>com.enter.net.quartz.MqMsgTransformationListener</listener-class>?
?</listener>?
這樣就可以在項目啟動時自動啟動線程。
參考:https://blog.csdn.net/sunnylinner/article/details/52004745
總結
以上是生活随笔為你收集整理的JavaWeb 项目时 启动一个线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFmpeg中的日志以及avio实现对文
- 下一篇: Javascript关闭当前窗口