package cn.itcast.lesson9;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolTest {
public static void main(String[] args) {
//固定了线程池中的线程。
//ExecutorService threadPool = Executors.newFixedThreadPool(3);
//缓存型池子,动态的增加减少线程
//ExecutorService threadPool = Executors.newCachedThreadPool();
//单一线程池
//ExecutorService threadPool = Executors.newSingleThreadExecutor();
//调度型线程池
ExecutorService threadPool = Executors.newScheduledThreadPool(3);
for(int i=1;i<=10;i++){
final int task = i;
threadPool.execute(new Runnable() {
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int j=1;j<=5;j++){
System.out.println(Thread.currentThread().getName()+
" is looping of "+j+" for task of "+task);
}
}
});
}
System.out.println("all of 10 tasks has committed");
threadPool.shutdown();
}
}
Executor的execute()方法
execute() 方法将Runnable实例加入pool中,并进行一些pool size计算和优先级处理
execute() 方法本身在Executor接口中定义,有多个实现类都定义了不同的execute()方法