首先创建一个线程类:
package MultipleThread.ThreadPool;
public class Runnable2 implements Runnable {
@Override
public void run() {
int i = 0;
// TODO Auto-generated method stub
for (i = 0; i < 20; i++) {
System.out.println(Thread.currentThread().getName() + " 当前i的值为:" + i);
if (i == 10) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
测试类:(在这里面创建线程池):
package MultipleThread.ThreadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolTest {
public static void main(String[] args) {
// 创建一个具有固定线程数6的线程池
ExecutorService pool = Executors.newFixedThreadPool(6);
// 向线程池中提交两个线程,submit方法将在有空闲线程的时候执行线程对象的方法
pool.submit(new Runnable2());
pool.submit(new Runnable2());
// 关闭线程池
pool.shutdown();
}
}
控制台打印如下:
pool-1-thread-1 当前i的值为:0
pool-1-thread-2 当前i的值为:0
pool-1-thread-1 当前i的值为:1
pool-1-thread-2 当前i的值为:1
pool-1-thread-1 当前i的值为:2
pool-1-thread-2 当前i的值为:2
pool-1-thread-1 当前i的值为:3
pool-1-thread-2 当前i的值为:3
pool-1-thread-1 当前i的值为:4
pool-1-thread-2 当前i的值为:4
pool-1-thread-1 当前i的值为:5
pool-1-thread-2 当前i的值为:5
pool-1-thread-1 当前i的值为:6
pool-1-thread-2 当前i的值为:6
pool-1-thread-1 当前i的值为:7
pool-1-thread-2 当前i的值为:7
pool-1-thread-1 当前i的值为:8
pool-1-thread-2 当前i的值为:8
pool-1-thread-1 当前i的值为:9
pool-1-thread-2 当前i的值为:9
pool-1-thread-1 当前i的值为:10
pool-1-thread-2 当前i的值为:10
pool-1-thread-1 当前i的值为:11
pool-1-thread-2 当前i的值为:11
pool-1-thread-2 当前i的值为:12
pool-1-thread-1 当前i的值为:12
pool-1-thread-2 当前i的值为:13
pool-1-thread-1 当前i的值为:13
pool-1-thread-1 当前i的值为:14
pool-1-thread-2 当前i的值为:14
pool-1-thread-1 当前i的值为:15
pool-1-thread-2 当前i的值为:15
pool-1-thread-1 当前i的值为:16
pool-1-thread-2 当前i的值为:16
pool-1-thread-1 当前i的值为:17
pool-1-thread-2 当前i的值为:17
pool-1-thread-1 当前i的值为:18
pool-1-thread-2 当前i的值为:18
pool-1-thread-1 当前i的值为:19
pool-1-thread-2 当前i的值为:19