ThreadPoolExecutor 几种方式建立线程池
由 admin 发表于 19:56package cn.no7player.executor; import java.util.concurrent.*; public class MyThread { public static void main(String[] args) throws InterruptedException{ final ConcurrentHashMap<String,String> data = new ConcurrentHashMap<String, String>(); final CountDownLatch latch = new CountDownLatch(6); Runnable myRunnable = new Runnable() { @Override public void run() { try { Thread.sleep(2000); System.out.println(Thread.currentThread().getName() + " run"); latch.countDown(); data.put(Thread.currentThread().getName(),"run"); } catch (InterruptedException e) { e.printStackTrace(); } } }; ThreadPoolExecutor executor = new ThreadPoolExecutor(6, 10, 5, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); //ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 6, 5, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>()); //ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 6, 5, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); //ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 4, 5, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>()); //ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 4, 5, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(2)); executor.execute(myRunnable); executor.execute(myRunnable); executor.execute(myRunnable); System.out.println("---先开三个---"); System.out.println("核心线程数" + executor.getCorePoolSize()); System.out.println("线程池数" + executor.getPoolSize()); System.out.println("队列任务数" + executor.getQueue().size()); executor.execute(myRunnable); executor.execute(myRunnable); executor.execute(myRunnable); System.out.println("---再开三个---"); System.out.println("核心线程数" + executor.getCorePoolSize()); System.out.println("线程池数" + executor.getPoolSize()); System.out.println("队列任务数" + executor.getQueue().size()); /* Thread.sleep(8000); System.out.println("----8秒之后----"); System.out.println("核心线程数" + executor.getCorePoolSize()); System.out.println("线程池数" + executor.getPoolSize()); System.out.println("队列任务数" + executor.getQueue().size());*/ try { latch.await(); System.out.println(data); }catch (Exception e){} } }