2 |
|
|
3 |
import java.util.ArrayList; |
import java.util.ArrayList; |
4 |
import java.util.Collections; |
import java.util.Collections; |
5 |
|
import java.util.HashMap; |
6 |
import java.util.List; |
import java.util.List; |
7 |
import java.util.concurrent.ExecutorService; |
import java.util.concurrent.ExecutorService; |
8 |
import java.util.concurrent.Executors; |
import java.util.concurrent.Executors; |
14 |
public static final String TASKMANAGER = "TASKMANAGER"; |
public static final String TASKMANAGER = "TASKMANAGER"; |
15 |
|
|
16 |
ExecutorService executor = Executors.newFixedThreadPool(1); |
ExecutorService executor = Executors.newFixedThreadPool(1); |
17 |
|
|
18 |
|
private int nextId = 1; |
19 |
|
|
20 |
|
|
21 |
private ArrayList<Task> tasks = new ArrayList<Task>(); |
private ArrayList<Task> tasks = new ArrayList<Task>(); |
22 |
|
private HashMap<Integer, Task> taskIdMap = new HashMap<Integer,Task>(); |
23 |
|
|
24 |
private Task currentTask; |
private Task currentTask; |
25 |
|
|
26 |
public List<TaskBean> getTasks() { |
public synchronized List<TaskBean> getTasks() { |
27 |
ArrayList<TaskBean> tmpList = new ArrayList<TaskBean>(); |
ArrayList<TaskBean> tmpList = new ArrayList<TaskBean>(); |
28 |
for (Task t : tasks) { |
for (Task t : tasks) { |
29 |
tmpList.add( t.getTaskBean() ); |
tmpList.add( t.getTaskBean() ); |
42 |
return this.currentTask; |
return this.currentTask; |
43 |
} |
} |
44 |
|
|
45 |
|
public Task getTaskById(int id) { |
46 |
|
return taskIdMap.get(id); |
47 |
|
} |
48 |
|
|
49 |
void shutDown() { |
void shutDown() { |
50 |
if (currentTask != null) { |
if (currentTask != null) { |
51 |
currentTask.doAbort(); |
currentTask.doAbort(); |
54 |
executor.shutdownNow(); |
executor.shutdownNow(); |
55 |
} |
} |
56 |
|
|
57 |
public void submitTask(Task newTask) { |
public synchronized void submitTask(Task newTask) { |
58 |
|
int id = getNextTaskid(); |
59 |
|
newTask.setId(id); |
60 |
|
|
61 |
newTask.setManager(this); |
newTask.setManager(this); |
62 |
|
|
63 |
|
taskIdMap.put(id, newTask); |
64 |
tasks.add(newTask); |
tasks.add(newTask); |
65 |
executor.submit(newTask); |
executor.submit(newTask); |
66 |
} |
} |
67 |
|
|
68 |
|
private synchronized int getNextTaskid() { |
69 |
|
return nextId++; |
70 |
|
} |
71 |
|
|
72 |
|
|
73 |
} |
} |