package com.basic; import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; /** * @program JavaBooks * @description: 第äºç§ï¼WorkStealingPool * @author: mf * @create: 2020/01/01 15:05 */ public class T28 { public static void main(String[] args) throws IOException { // é»è®¤æ ¸æ° ExecutorService service = Executors.newWorkStealingPool(); service.execute(new R(1000)); service.execute(new R(2000)); service.execute(new R(2000)); service.execute(new R(2000)); service.execute(new R(2000)); // ç±äºäº§ççæ¯ç²¾çµçº¿ç¨(宿¤çº¿ç¨ãåå°çº¿ç¨)ï¼ä¸»çº¿ç¨å¦æä¸é»å¡çè¯ï¼çä¸å°è¾åº System.in.read(); service.shutdown(); } private static class R implements Runnable { int time; public R(int time) { this.time = time; } @Override public void run() { try { TimeUnit.MILLISECONDS.sleep(time); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()); } } }