package com.example; import java.util.concurrent.BlockingDeque; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * Created by alanchen on 15/8/20. */ public class ThreadPoolPratice { static BlockingDeque<Runnable> working = new LinkedBlockingDeque<>(1); static ThreadFactory factory = new ThreadFactory() { @Override public Thread newThread(Runnable r) { return new Thread(r, "factory:" + System.currentTimeMillis()); } }; // RejectedExecutionHandler rejectedExecutionHandler = new RejectedExecutionHandler() { // @Override // public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { // executor. // } // }; static ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 10, TimeUnit.SECONDS, working, factory); public static void main(String[] args) { for (int i = 0; i < 50; i++) { executor.submit(new Runnable() { @Override public void run() { System.out.println("name:"+Thread.currentThread().getName()); } }); } } }