JAva 5スレッドプール


1)固定サイズスレッドプールの作成
   
   
   
   
  1. public class ThreadTest {  
  2.     public static void main(String[] args) {  
  3.         //ExecutorService executorService = Executors.newFixedThreadPool(2); //  
  4.         //ExecutorService executorService = Executors.newSingleThreadExecutor(); //  
  5.         ExecutorService executorService = Executors.newCachedThreadPool(); //  
  6.         Task task1 = new Task();  
  7.         Task task2 = new Task();  
  8.         Task task3 = new Task();  
  9.         executorService.execute(task1);  
  10.         executorService.execute(task2);  
  11.         executorService.execute(task3);  
  12.         executorService.shutdown();  
  13.     }  
  14. }  
  15.  
  16. class Task implements Runnable {  
  17.     public void run() {  
  18.         System.out.println(Thread.currentThread().getName() + " Hello");  
  19.     }  

newFixedThreadPool(int size)やnewSingeThreadExecutor()のようなサイズの固定スレッドプールの場合、追加するタスクがスレッドプールより大きい場合、タスクはキューに並んで待つ必要があります.
2)可変サイズスレッドプールの作成
   
   
   
   
  1. public class ThreadTest {  
  2.     public static void main(String[] args) {  
  3.         ExecutorService executorService = Executors.newCachedThreadPool(); //  
  4.         Task task1 = new Task();  
  5.         Task task2 = new Task();  
  6.         Task task3 = new Task();  
  7.         executorService.execute(task1);  
  8.         executorService.execute(task2);  
  9.         executorService.execute(task3);  
  10.         executorService.shutdown();  
  11.     }  
  12. }  
  13.  
  14. class Task implements Runnable {  
  15.     public void run() {  
  16.         System.out.println(Thread.currentThread().getName() + " Hello");  
  17.     }  

3)遅延接続スレッドプールの作成
   
   
   
   
  1. public class ThreadTest {  
  2.     public static void main(String[] args) {  
  3.         ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);  
  4.         Task task1 = new Task();  
  5.         Task task2 = new Task();  
  6.         Task task3 = new Task();  
  7.         executorService.execute(task1);  
  8.         executorService.scheduleAtFixedRate(task2,0L,2,TimeUnit.HOURS); // task2 ,2 ,TimeUtils.HOURS                                                                                                                                                                   ,  
  9.         executorService.schedule(task3,10, TimeUnit.HOURS); //task2 Runnable ,10 ,TimeUtil.HOURS ,                                                                                                                                                        
  10.         executorService.shutdown();  
  11.     }  
  12. }  
  13.  
  14. class Task implements Runnable {  
  15.     public void run() {  
  16.         System.out.println(Thread.currentThread().getName() + " Hello");  
  17.     }