仅有一个线程的线程池
public class ThreadPoolSingleExecutor implements Executor {
BlockingQueue<Runnable> taskQueue = new ArrayBlockingQueue<>(2);
public ThreadPoolSingleExecutor() {
new Thread(() -> {
for (;;) {
try {
final Runnable task = taskQueue.take();
task.run();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
},"worker线程").start();
}
@Override
public void execute(Runnable command) {
try {
taskQueue.put(command);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ThreadPoolSingleExecutor executor = new ThreadPoolSingleExecutor();
executor.execute(() -> {
System.out.println("我是任务一,休眠五秒");
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("任务一执行完毕");
});
executor.execute(() -> {
System.out.println("我是任务二");
});
}
}