Spring 项目实现简单的多线程定时同步任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//1 在contextListener 直接定义调用3个线程
public class ContextListener implements ServletContextListener{

@Override
public 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
}

}

 评论


本站使用 Material X 作为主题 , 总访问量为 次 。
隐藏