使用线程池实现多线程

newFixedThreadPool:线程池中指定固定线程个数来执行任务
package com.roocon.thread.t2;

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

public class Demo6 {

    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newFixedThreadPool(10);
        for(int i = 0; i < 10; i++){
            threadPool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName()+" is executing");
                }
            });
        }
    }
}

运行结果:

pool-1-thread-1 is executing
pool-1-thread-2 is executing
pool-1-thread-3 is executing
pool-1-thread-7 is executing
pool-1-thread-4 is executing
pool-1-thread-6 is executing
pool-1-thread-5 is executing
pool-1-thread-10 is executing
pool-1-thread-9 is executing
pool-1-thread-8 is executing
newCachedThreadPool():刚开始线程池中先创建几个线程用着,如果线程池中有空闲的线程可以去执行任务,则不会创建新的线程,
如果线程池中无可利用的线程,则会去创建新的线程。可以认为是智能的创建线程。
package com.roocon.thread.t2;

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

public class Demo6 {

    public static void main(String[] args) {
        ExecutorService threadPool = Executors.newCachedThreadPool();
        for(int i = 0; i < 10; i++){
            threadPool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName()+" is executing");
                }
            });
        }
    }
}

运行结果:

pool-1-thread-1 is executing
pool-1-thread-3 is executing
pool-1-thread-2 is executing
pool-1-thread-4 is executing
pool-1-thread-3 is executing
pool-1-thread-1 is executing
pool-1-thread-1 is executing
pool-1-thread-4 is executing
pool-1-thread-2 is executing
pool-1-thread-5 is executing


原文地址:https://www.cnblogs.com/sunnyDream/p/8001173.html