利用jdk提供线程池执行任务写法, 主要是查看 API文档的 Executors 方法
package thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPool {
/**
* 1 线程池中只有 1 有几个任务 2 创建了几个线程
* 2 创建任务后直接将任务丢给线程池 让线程池中的线程执行即可 执行完毕后 线程池内的线程不会死亡 会等待将来的任务
*/
public static void main(String[] args) {
//ExecutorService threadPool = Executors.newFixedThreadPool(3); 池子中线程数是固定3个
ExecutorService threadPool = Executors.newCachedThreadPool();//池子中线程随着任务增加会动态增加
//Executors.newSingleThreadExecutor(); 创建一个线程 如果此线程死亡 那么死亡之前会新建另一个线程
/*Executors.newScheduledThreadPool(3).scheduleAtFixedRate( 线程池中创建定时器 执行
new Runnable(){
@Override
public void run() {
System.out.println("bombing!");
}},
6,
2,
TimeUnit.SECONDS);*/
for(int i=0; i<10; i++){
final int task = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
for(int j=0; j<10; j++) {
try {
Thread.sleep(70);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程: " + Thread.currentThread().getName() + " 执行第 "
+ task +"次任务" + "打印结果为: " + j);
}
}
});
}
System.out.println("all of 10 tasks have committed! ");
//threadPool.shutdown(); 执行完线程后 池关闭
}
}
线程池类关系图: