1 package com.nexuiz.demorecorder.application;
4 import java.util.ArrayList;
6 import java.util.concurrent.ArrayBlockingQueue;
7 import java.util.concurrent.ThreadPoolExecutor;
8 import java.util.concurrent.TimeUnit;
10 import com.nexuiz.demorecorder.application.jobs.RecordJob;
12 public class RecorderJobPoolExecutor {
14 private int poolSize = 1;
15 private int maxPoolSize = 1;
16 private long keepAliveTime = 10;
17 private ThreadPoolExecutor threadPool = null;
18 private ArrayBlockingQueue<Runnable> queue = null;
20 public RecorderJobPoolExecutor() {
21 queue = new ArrayBlockingQueue<Runnable>(99999);
22 threadPool = new ThreadPoolExecutor(poolSize, maxPoolSize, keepAliveTime, TimeUnit.SECONDS, queue);
25 public void runJob(Runnable task) {
26 threadPool.execute(task);
29 public void clearUnfinishedJobs() {
30 threadPool.getQueue().clear();
33 public void shutDown() {
34 threadPool.shutdownNow();
37 public synchronized List<RecordJob> getJobList() {
38 List<RecordJob> list = new ArrayList<RecordJob>();
39 for (Runnable job : this.queue) {
41 RecordJob j = (RecordJob)job;
43 } catch (ClassCastException e) {}