Spring 项目实现简单的多线程定时同步任务 Zzz 2019-02-26 Java Spring 项目实现简单的多线程定时同步任务 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172//1 在contextListener 直接定义调用3个线程public class ContextListener implements ServletContextListener{@Overridepublic void contextInitialized(ServleteContextEvent sce ){ Thread t1 = new Thread(new Runnable(){ @Override public void run(){ try{ while(true){ com.test.ApplySynManager.getInstance().synMain(); Thread.sleep(60 * 1000); } }catch(){ e.printStackTrace(); } } }); Thread t2 = new Thread(new Runnable(){ ... }); Thread t3 = new Thread(new Runnable(){ @Override public void run(){ ... }); t1.start(); t2.start(); t3.start();}//2、单例模式管理线程public class ApplySynManager{ private ApplySynManager(){} private ApplySynManager examApp = null; //单例模式,保持这个对象 public static ApplySynManager getInstance(){ if (examApp == null) { //当flag == true时,为了解决,timer.cancel()后,重新创建一个timer examApp = new ExamApplySynManager(); } return examApp; } public void synMain(){ if(DefCommon.syncExamThread == DefCommon.THREAD_RUNING){ FunCommon.printLog("线程运行中synExamMain"); return FunCommon.getReturnJson(DefCommon.E_Fail,"syncExamThread,线程运行中"); } DefCommon.syncExamThread = DefCommon.THREAD_RUNING; //业务处理... //线程标记为结束 DefCommon.syncExamThread = DefCommon.THREAD_STOP; return; } public void synReport(){ ... //对应t2 } public void synDcm(){ ... //对应t3 }} 更新于 2019年9月19日 Spring 上一页 BAT 脚本实现文件夹监控 .bat Windows 下一页 原生 Ajax 上传文件 JQuery Ajax