线程池的7种创建方式,强烈推荐你用它...(5)

简介: 线程池的7种创建方式,强烈推荐你用它...(5)

6.newWorkStealingPool


创建一个抢占式执行的线程池(任务执行顺序不确定),注意此方法只有在 JDK 1.8+ 版本中才能使用。


使用示例如下:


public static void workStealingPool() {
    // 创建线程池
    ExecutorService threadPool = Executors.newWorkStealingPool();
    // 执行任务
    for (int i = 0; i < 10; i++) {
        final int index = i;
        threadPool.execute(() -> {
            System.out.println(index + " 被执行,线程名:" + Thread.currentThread().getName());
        });
    }
    // 确保任务执行完成
    while (!threadPool.isTerminated()) {
    }
}


执行结果如下:


微信图片_20220120145838.jpg


从上述结果可以看出,任务的执行顺序是不确定的,因为它是抢占式执行的。


7.ThreadPoolExecutor


最原始的创建线程池的方式,它包含了 7 个参数可供设置。


使用示例如下:


public static void myThreadPoolExecutor() {
    // 创建线程池
    ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(10));
    // 执行任务
    for (int i = 0; i < 10; i++) {
        final int index = i;
        threadPool.execute(() -> {
            System.out.println(index + " 被执行,线程名:" + Thread.currentThread().getName());
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
    }
}


执行结果如下:


微信图片_20220120145906.jpg

相关文章
|
1月前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法
QtSingleApplication 实现单例模式 【实际项目,亲测可用哈】
QtSingleApplication 实现单例模式 【实际项目,亲测可用哈】
QtSingleApplication 实现单例模式 【实际项目,亲测可用哈】
|
存储 Java
还在为线程间上下文传递而烦恼,用TransmittableThreadLocal试试
还在为线程间上下文传递而烦恼,用TransmittableThreadLocal试试
373 0
多线程顺序运行的 4 种方法,面试随便问!
多线程顺序运行的 4 种方法,面试随便问!
196 0
|
Java
线程池的7种创建方式,强烈推荐你用它...(4)
线程池的7种创建方式,强烈推荐你用它...(4)
126 0
线程池的7种创建方式,强烈推荐你用它...(4)
|
缓存 Java
线程池的7种创建方式,强烈推荐你用它...(2)
线程池的7种创建方式,强烈推荐你用它...(2)
88 0
线程池的7种创建方式,强烈推荐你用它...(2)
|
存储 缓存 资源调度
线程池的7种创建方式,强烈推荐你用它...(1)
线程池的7种创建方式,强烈推荐你用它...(1)
213 0
线程池的7种创建方式,强烈推荐你用它...(1)
|
Java
线程池的7种创建方式,强烈推荐你用它...(7)
线程池的7种创建方式,强烈推荐你用它...(7)
68 0
线程池的7种创建方式,强烈推荐你用它...(7)
|
Java
线程池的7种创建方式,强烈推荐你用它...(8)
线程池的7种创建方式,强烈推荐你用它...(8)
137 0
|
Java
线程池的7种创建方式,强烈推荐你用它...(3)
线程池的7种创建方式,强烈推荐你用它...(3)
104 0
线程池的7种创建方式,强烈推荐你用它...(3)