JAva 5スレッドプール
1)固定サイズスレッドプールの作成
newFixedThreadPool(int size)やnewSingeThreadExecutor()のようなサイズの固定スレッドプールの場合、追加するタスクがスレッドプールより大きい場合、タスクはキューに並んで待つ必要があります.
2)可変サイズスレッドプールの作成
3)遅延接続スレッドプールの作成
- public class ThreadTest {
- public static void main(String[] args) {
- //ExecutorService executorService = Executors.newFixedThreadPool(2); //
- //ExecutorService executorService = Executors.newSingleThreadExecutor(); //
- ExecutorService executorService = Executors.newCachedThreadPool(); //
- Task task1 = new Task();
- Task task2 = new Task();
- Task task3 = new Task();
- executorService.execute(task1);
- executorService.execute(task2);
- executorService.execute(task3);
- executorService.shutdown();
- }
- }
-
- class Task implements Runnable {
- public void run() {
- System.out.println(Thread.currentThread().getName() + " Hello");
- }
- }
newFixedThreadPool(int size)やnewSingeThreadExecutor()のようなサイズの固定スレッドプールの場合、追加するタスクがスレッドプールより大きい場合、タスクはキューに並んで待つ必要があります.
2)可変サイズスレッドプールの作成
- public class ThreadTest {
- public static void main(String[] args) {
- ExecutorService executorService = Executors.newCachedThreadPool(); //
- Task task1 = new Task();
- Task task2 = new Task();
- Task task3 = new Task();
- executorService.execute(task1);
- executorService.execute(task2);
- executorService.execute(task3);
- executorService.shutdown();
- }
- }
-
- class Task implements Runnable {
- public void run() {
- System.out.println(Thread.currentThread().getName() + " Hello");
- }
- }
3)遅延接続スレッドプールの作成
- public class ThreadTest {
- public static void main(String[] args) {
- ScheduledExecutorService executorService = Executors.newScheduledThreadPool(2);
- Task task1 = new Task();
- Task task2 = new Task();
- Task task3 = new Task();
- executorService.execute(task1);
- executorService.scheduleAtFixedRate(task2,0L,2,TimeUnit.HOURS); // task2 ,2 ,TimeUtils.HOURS ,
- executorService.schedule(task3,10, TimeUnit.HOURS); //task2 Runnable ,10 ,TimeUtil.HOURS ,
- executorService.shutdown();
- }
- }
-
- class Task implements Runnable {
- public void run() {
- System.out.println(Thread.currentThread().getName() + " Hello");
- }
- }