]> icculus.org git repositories - divverent/nexuiz.git/blob - misc/tools/NexuizDemoRecorder/src/main/java/com/nexuiz/demorecorder/application/RecorderJobPoolExecutor.java
commit v0.2 of Nexuiz Demo Recorder
[divverent/nexuiz.git] / misc / tools / NexuizDemoRecorder / src / main / java / com / nexuiz / demorecorder / application / RecorderJobPoolExecutor.java
1 package com.nexuiz.demorecorder.application;\r
2 \r
3 \r
4 import java.util.ArrayList;\r
5 import java.util.List;\r
6 import java.util.concurrent.ArrayBlockingQueue;\r
7 import java.util.concurrent.ThreadPoolExecutor;\r
8 import java.util.concurrent.TimeUnit;\r
9 \r
10 import com.nexuiz.demorecorder.application.jobs.RecordJob;\r
11 \r
12 public class RecorderJobPoolExecutor {\r
13         \r
14         private int poolSize = 1;\r
15         private int maxPoolSize = 1;\r
16         private long keepAliveTime = 10;\r
17         private ThreadPoolExecutor threadPool = null;\r
18         private ArrayBlockingQueue<Runnable> queue = null;\r
19 \r
20         public RecorderJobPoolExecutor() {\r
21                 queue = new ArrayBlockingQueue<Runnable>(99999);\r
22                 threadPool = new ThreadPoolExecutor(poolSize, maxPoolSize, keepAliveTime, TimeUnit.SECONDS, queue);\r
23         }\r
24 \r
25         public void runJob(Runnable task) {\r
26                 threadPool.execute(task);\r
27         }\r
28         \r
29         public void clearUnfinishedJobs() {\r
30                 threadPool.getQueue().clear();\r
31         }\r
32 \r
33         public void shutDown() {\r
34                 threadPool.shutdownNow();\r
35         }\r
36         \r
37         public synchronized List<RecordJob> getJobList() {\r
38                 List<RecordJob> list = new ArrayList<RecordJob>();\r
39                 for (Runnable job : this.queue) {\r
40                         try {\r
41                                 RecordJob j = (RecordJob)job;\r
42                                 list.add(j);\r
43                         } catch (ClassCastException e) {}\r
44                 }\r
45                 \r
46                 return list;\r
47         }\r
48 }\r