jdk自带的线程池

阅读更多

public class ThreadPool {

 public static void main(String[] args) {
  /*
  //线程池
  int corePoolSize = 2;
  int maximumPoolSize = 5;
  long keepAliveTime = 0;
  TimeUnit unit = TimeUnit.SECONDS;
  BlockingQueue workQueue = new ArrayBlockingQueue(8);
//  ThreadPoolExecutor pool = new ThreadPoolExecutor(corePoolSize,
//                maximumPoolSize,
//                keepAliveTime,
//                unit,
//                workQueue);
//  for(int i=0;i<25;i++)
//  pool.submit(new PrintThread());
//  pool.shutdown();

  //拒绝策略:中止
  keepAliveTime = 30;
  ThreadPoolExecutor pool2 = null;
  try {
   pool2= new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
    Executors.defaultThreadFactory(), new AbortPolicy());
  for(int i=0;i<25;i++)
   pool2.submit(new PrintThread());
  }finally {
   pool2.shutdown();
  }
  */
  //单个线程:一个一个地执行
//  ExecutorService e = Executors.newSingleThreadExecutor();
//  Executors.newSingleThreadExecutor(threadFactory);
//  for(int i=0;i<10;i++) {
//   e.execute(new PrintThread());
//  }
//  e.shutdown();
  
  //固定线程池:3个工作线程
//  ExecutorService e = Executors.newFixedThreadPool(3);
//  for(int i=0;i<10;i++)
//   e.execute(new PrintThread());
//  e.shutdown();
  
  //需要多少线程就创建多少
//  ExecutorService e = Executors.newCachedThreadPool();
//  for(int i=0;i<1000;i++)
//   e.execute(new PrintThread());
//  e.shutdown();
  
  //定时任务:单线程
//  ScheduledExecutorService e = Executors.newSingleThreadScheduledExecutor();
//  e.schedule(new PrintThread(), 10, TimeUnit.SECONDS); //延迟10秒执行一次
//  e.schedule(new PrintThread(), 10, TimeUnit.SECONDS);
//  e.scheduleWithFixedDelay(new PrintThread(), 2, 12, TimeUnit.SECONDS); //每隔12秒执行一次
  
  //定时任务:三个线程并发执行
  ScheduledExecutorService e = Executors.newScheduledThreadPool(3);
  for(int i=0;i<4;i++)
   e.scheduleWithFixedDelay(new PrintThread(), 2, 5, TimeUnit.SECONDS); //每隔5秒执行一次
  
  e.scheduleAtFixedRate(new PrintThread(), 2, 6, TimeUnit.SECONDS); //每隔6执行一次
  
 }
 
 static class PrintThread implements Runnable{

  public void run() {

   System.out.println("hello..");
   try {
    Thread.sleep(100);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }
 
 

}

你可能感兴趣的:(线程池)