CachedThreadPool与FixedThreadPool

1.一个线程实例加入CachedThreadPool时,如果该线程实例不存在CachedThreadPool,则创建一个,CachedThreadPool中线程实例默认超时时间为60s,超过这个时间,线程实例停止并被移出CachedThreadPool,适用于生存期短、异步的线程任务。

2.FixedThreadPool中最多只有固定数目线程存在,一个线程实例请求加入FixedThreadPool时,如果该实例不存在,且没有达到线程池数目上线,则会创建一个实例,否则,会先加入等待序列,当FixedThreadPool中有一个线程停止并移出线程池后,线程实例才能加入线程池,FixedThreadPool没有超时机制,适用于稳定且并发线程任务

3.public static void main(String[] args) {

        int pool_size = 10;
        ExecutorService executorService = Executors.newCachedThreadPool();
        int cpuNums = Runtime.getRuntime().availableProcessors();
        ExecutorService executorService1 = Executors.newFixedThreadPool(cpuNums * pool_size);
        int i = 0;
        while (true) {
            System.out.println(++i);
            executorService1.execute(new Handler());//将实例加入线程池
        }
    }


    public static class Handler implements Runnable {
        public void run() {
            System.out.println("----");
        }
    }

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