package thread.pool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Demo1 {
public static void main(String[] args) {
/**
* 线程池案例
* 1:利用线程池复用线程减少反复创建线程次数
* 提高线程使用效率
* 2:利用线程池保护线程总数,避免服务器的资源
* 使用过载
*
*/
//利用工厂方法newFixedThreadPool创建一个线程池对象
ExecutorService pool =Executors.newFixedThreadPool(10);
//创建10个任务交给线程池,复用线程执行
for(int i =0 ;i <=10; i++) {
//创建被线程执行的任务
Runnable task =new PrintTask(i);
pool.submit(task);
}
}
}
/** 被线程池执行的任务 */
class PrintTask implements Runnable {
int n;
public PrintTask(int n) {
this.n = n;
}
public void run() {
Thread t = Thread.currentThread();
for (int i = 0; i < 10; i++) {
System.out.println(t + "task:" + n);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(n+"over!");
}
}