package com.gravspace.util; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; public class QueuedThreadExecuter extends Thread { LinkedBlockingQueue<Thread> queuedTasks; ExecutorService threadExecutor; public QueuedThreadExecuter(){ threadExecutor = Executors.newFixedThreadPool(1); queuedTasks = new LinkedBlockingQueue<Thread>(); } public void addTask(Thread task){ queuedTasks.add(task); } public void run(){ for (;;){ try { Thread task = queuedTasks.take(); threadExecutor.submit(task); } catch (InterruptedException e) { break; } } } }