thread50

来源:互联网 发布:高德导航端口检测工具 编辑:程序博客网 时间:2024/05/21 14:07
package com.neutron.t23;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;/** * 线程池 *    1.固定个数的线程池 *    2.缓存线程池,开始线程数0 *         如果需要线程,当前线程池没有,那么创建线程池 *         如果需要线程,线程池中有没有使用的线程,那么使用已经存在的线程 *         如果线程池中线程超过60秒(默认)没有使用,那么该线程停止 *    3.只有1个线程的线程池 *         保证线程执行的先后顺序 */public class T239SinglePool {    /*    T1:java.util.concurrent.ThreadPoolExecutor@2503dbd3    [Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]    T2:java.util.concurrent.ThreadPoolExecutor@2503dbd3    [Running, pool size = 2, active threads = 2, queued tasks = 0, completed tasks = 0]    pool-1-thread-1    pool-1-thread-2    T3:java.util.concurrent.ThreadPoolExecutor@2503dbd3    [Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2]     */    public static void main(String[] args) throws InterruptedException, ExecutionException {        // 创建个数为1的线程池        ExecutorService service = Executors.newSingleThreadExecutor();        for (int i = 0; i < 2; i++) {            final int j = i;            service.execute(() -> {                try {                    TimeUnit.MILLISECONDS.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }                System.out.println(j + ":" + Thread.currentThread().getName());            });        }        service.shutdown();    }}

原创粉丝点击