线程池笔记

线程池笔记

线程池

package com.cdinit;

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadPoolDemo {
    public static void main(String[] arg) throws Exception{
//        ExecutorService executorService = Executors.newFixedThreadPool(5);
//        ExecutorService executorService = Executors.newSingleThreadExecutor();
        ExecutorService executorService = Executors.newCachedThreadPool();
        Future<Integer> result = null;
        try{
            for(int i=1;i<=15;i++){
                result = executorService.submit(()->{
//                    Thread.sleep(400);
                    System.out.print(Thread.currentThread().getName());
                    return new Random().nextInt(10);
                });
                System.out.println("-->result--->" + result.get());
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            executorService.shutdown();
        }


    }
}

ThreadPoolSchedu

package com.cdinit;

import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

public class ThreadPoolScheduDemo {
    public static void main(String[] arg) throws Exception{
        ScheduledExecutorService service = Executors.newScheduledThreadPool(5);
        ScheduledFuture<Integer> result = null;
        try{
            for(int i=1;i<=15;i++){
                result = service.schedule(()->{
                    System.out.println(Thread.currentThread().getName());
                    return new Random().nextInt(10);
                },2,TimeUnit.SECONDS);
                System.out.println(result.get());
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            service.shutdown();
        }
    }
}

参考

Executors创建的4种线程池的使用