ExecutorService 是线程池的接口。
Executors 是用于创建不同线程池的工具类。
- ExecutorService executorService = Executors.newFixedThreadPool(2);
- for(int j=0;j<10;j++){
- final int t = j;
- executorService.execute( new Runnable(){
- @Override
- public void run() {
- for(int i=0;i<4;i++){
- System.out.println("t:" + t + "," + "i:" + i + ", tid:" + Thread.currentThread().getId());
- }
- }
- });
t:0,i:0, tid:8
t:0,i:1, tid:8
t:0,i:2, tid:8
t:0,i:3, tid:8
t:1,i:0, tid:9
t:2,i:0, tid:8
t:2,i:1, tid:8
t:1,i:1, tid:9
t:2,i:2, tid:8
t:2,i:3, tid:8
t:1,i:2, tid:9
t:1,i:3, tid:9
t:4,i:0, tid:9
t:4,i:1, tid:9
t:4,i:2, tid:9
t:3,i:0, tid:8
t:3,i:1, tid:8
t:4,i:3, tid:9
t:3,i:2, tid:8
t:5,i:0, tid:9
t:5,i:1, tid:9
t:3,i:3, tid:8
t:5,i:2, tid:9
t:5,i:3, tid:9
t:6,i:0, tid:8
t:6,i:1, tid:8
t:6,i:2, tid:8
t:6,i:3, tid:8
t:8,i:0, tid:8
t:7,i:0, tid:9
t:7,i:1, tid:9
t:8,i:1, tid:8
t:8,i:2, tid:8
t:8,i:3, tid:8
t:7,i:2, tid:9
t:9,i:0, tid:8
t:7,i:3, tid:9
t:9,i:1, tid:8
t:9,i:2, tid:8
t:9,i:3, tid:8
- ExecutorService executorService = Executors.newCachedThreadPool();
- for(int j=0;j<10;j++){
- final int t = j;
- executorService.execute( new Runnable(){
- @Override
- public void run() {
- for(int i=0;i<4;i++){
- System.out.println("t:" + t + "," + "i:" + i + ", tid:" + Thread.currentThread().getId());
- }
- }
- });
- }
t:2,i:0, tid:10
t:2,i:1, tid:10
t:3,i:0, tid:11
t:3,i:1, tid:11
t:0,i:0, tid:8
t:0,i:1, tid:8
t:0,i:2, tid:8
t:0,i:3, tid:8
t:1,i:0, tid:9
t:1,i:1, tid:9
t:1,i:2, tid:9
t:3,i:2, tid:11
t:1,i:3, tid:9
t:2,i:2, tid:10
t:2,i:3, tid:10
t:5,i:0, tid:13
t:5,i:1, tid:13
t:9,i:0, tid:17
t:4,i:0, tid:12
t:4,i:1, tid:12
t:9,i:1, tid:17
t:9,i:2, tid:17
t:5,i:2, tid:13
t:5,i:3, tid:13
t:8,i:0, tid:16
t:8,i:1, tid:16
t:8,i:2, tid:16
t:8,i:3, tid:16
t:7,i:0, tid:15
t:3,i:3, tid:11
t:6,i:0, tid:14
t:7,i:1, tid:15
t:7,i:2, tid:15
t:7,i:3, tid:15
t:9,i:3, tid:17
t:4,i:2, tid:12
t:6,i:1, tid:14
t:6,i:2, tid:14
t:6,i:3, tid:14
t:4,i:3, tid:12
- ExecutorService executorService = Executors.newSingleThreadExecutor();
- for(int j=0;j<10;j++){
- final int t = j;
- executorService.execute( new Runnable(){
- @Override
- public void run() {
- for(int i=0;i<4;i++){
- System.out.println("t:" + t + "," + "i:" + i + ", tid:" + Thread.currentThread().getId());
- }
- }
- });
- }
输出信息可以看到,对 (每个任务(t),线程 id(tid) 都相同。
t:0,i:0, tid:8
t:0,i:1, tid:8
t:0,i:2, tid:8
t:0,i:3, tid:8
t:1,i:0, tid:8
t:1,i:1, tid:8
t:1,i:2, tid:8
t:1,i:3, tid:8
t:2,i:0, tid:8
t:2,i:1, tid:8
t:2,i:2, tid:8
t:2,i:3, tid:8
t:3,i:0, tid:8
t:3,i:1, tid:8
t:3,i:2, tid:8
t:3,i:3, tid:8
t:4,i:0, tid:8
t:4,i:1, tid:8
t:4,i:2, tid:8
t:4,i:3, tid:8
t:5,i:0, tid:8
t:5,i:1, tid:8
t:5,i:2, tid:8
t:5,i:3, tid:8
t:6,i:0, tid:8
t:6,i:1, tid:8
t:6,i:2, tid:8
t:6,i:3, tid:8
t:7,i:0, tid:8
t:7,i:1, tid:8
t:7,i:2, tid:8
t:7,i:3, tid:8
t:8,i:0, tid:8
t:8,i:1, tid:8
t:8,i:2, tid:8
t:8,i:3, tid:8
t:9,i:0, tid:8
t:9,i:1, tid:8
t:9,i:2, tid:8
t:9,i:3, tid:8
来源: http://www.bubuko.com/infodetail-1995077.html