Java线程池之WorkStealingPool,任务窃取算法
Posted 尘世间迷茫的小书童
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java线程池之WorkStealingPool,任务窃取算法相关的知识,希望对你有一定的参考价值。
1 import java.io.IOException; 2 import java.util.concurrent.ExecutorService; 3 import java.util.concurrent.Executors; 4 import java.util.concurrent.TimeUnit; 5 6 /** 7 * 任务窃取算法 8 */ 9 public class WorkStealingPool { 10 11 public static void main(String[] args) { 12 13 ExecutorService service = Executors.newWorkStealingPool(); 14 15 System.out.println(Runtime.getRuntime().availableProcessors()); 16 17 service.submit(new R(1)); //精灵线程 18 service.submit(new R(2)); 19 service.submit(new R(2)); 20 service.submit(new R(2)); 21 service.submit(new R(2)); 22 23 try { 24 System.in.read(); 25 //由于产生的是精灵线程(守护线程、后台线程),主程序不阻塞的话看不到打印信息 26 } catch (IOException e) { 27 e.printStackTrace(); 28 } 29 30 } 31 32 static class R implements Runnable { 33 34 int time; 35 36 R(int runTime) { 37 this.time = runTime; 38 } 39 40 @Override 41 public void run() { 42 try { 43 TimeUnit.SECONDS.sleep(time); 44 } catch (InterruptedException e) { 45 e.printStackTrace(); 46 } 47 System.out.println(time + " " + Thread.currentThread().getName()); 48 } 49 } 50 51
newWorkStealingPool线程池的实现用到了ForkJoinPool,用到了分而治之,递归计算的算法,
有兴趣的可以查看博客https://www.cnblogs.com/mxh-java/p/12244318.html
以上是关于Java线程池之WorkStealingPool,任务窃取算法的主要内容,如果未能解决你的问题,请参考以下文章
提升--18---线程池--04----WorkStealingPool ForkJoinPool