码迷,mamicode.com
首页 > 编程语言 > 详细

Java并发程序设计(6)线程池之线程数量的控制

时间:2017-03-24 22:11:32      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:thread   runnable   1.2   ice   over   ++   1.4   read   java   

1.1. ExecutorService

ExecutorService是线程池的接口。

Executors是用于创建不同线程池的工具类。

 

 

1.2. 线程数量固定的线程池

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

 

 

1.3. 线程数量可变的线程池

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

 

1.4. 单个线程的线程池

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

 

Java并发程序设计(6)线程池之线程数量的控制

标签:thread   runnable   1.2   ice   over   ++   1.4   read   java   

原文地址:http://www.cnblogs.com/coe2coe/p/6613412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!