Java线程池

  1. import java.util.concurrent.ExecutorService;  
  2. import java.util.concurrent.Executors;  
  3. import java.util.concurrent.ScheduledExecutorService;  
  4. import java.util.concurrent.TimeUnit;  
  5.   
  6. public class ThreadPoolTest {  
  7.     static int num = 100;  
  8.     public static void main(String[] args) throws InterruptedException {  
  9.         //固定线程数量的线程池,有任务就派空闲线程去执行,多余的任务等待  
  10.         //ExecutorService  pool= Executors.newFixedThreadPool(3);  
  11.         //根据任务需要,自动创建线程,且 前面已创建的线程,空闲时,可被复用  
  12.         //ExecutorService  pool= Executors.newCachedThreadPool();  
  13.         //单个线程,若执行期出现失败而终止此单个线程,则会建一个新线程来代替,运行任务  
  14.         ExecutorService  pool= Executors.newSingleThreadExecutor();  
  15.         //给线程池加 10条任务  
  16.         for (int j= 0; j < 10; j++) {  
  17.             final int task = j;  
  18.             pool.execute(new Runnable() {  
  19.                   
  20.                 @Override  
  21.                 public void run() {  
  22.                     // TODO Auto-generated method stub  
  23.                     for (int i=0; i < 10; i++) {  
  24.                         System.out.println(Thread.currentThread().getName() + "--" +i  
  25.                                 + "--" + task + " of taks" + " 计数:" + (--num));  
  26.                     }  
  27.                 }  
  28.             });  
  29.             // Thread.sleep(20);  
  30.         }  
  31.         //可安排在给定的延迟后运行或定期执行的命令。   
  32.         ScheduledExecutorService service = Executors.newScheduledThreadPool(3);  
  33.         for (int i = 0; i < 5; i++) {  
  34.             final int x = i;  
  35.             service.scheduleAtFixedRate(new Runnable() {  
  36.                   
  37.                 @Override  
  38.                 public void run() {  
  39.                     // TODO Auto-generated method stub  
  40.                     System.out.println("Boon " + x + "  "  + Thread.currentThread().getName());  
  41.                 }  
  42.             },0,2,TimeUnit.SECONDS);//延迟0秒,周期2秒  
  43.         }  
  44.           
  45.         //poor.shutdownNow();//试图马上停了所有正在执行的任务,返回任务列表  
  46.         pool.shutdown();//把分配给线程池的任务都执行完,就不再等待接受新任务了,  
  47.     //  service.shutdown();  
  48.           
  49.     }  
  50. }

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