package com.xh;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ThreadDemo03 {
public static void main(String[] args) {
//下面的都是从ThreadPoolExecutor构造出来的
ThreadPoolExecutor tp = new ThreadPoolExecutor(10, 20, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>());
for(int i = 0;i<10;i++) {
int t = i;
tp.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("ThreadPoolExcutor创建的"+Thread.currentThread().getName()+"num=:"+t);
}
});
}
//newcachedThreadPool 缓存线程池
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
for(int i = 0; i < 10; i++) {
final int index = i;
try {
Thread.sleep(index*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
cachedThreadPool.execute(new Runnable () {
public void run () {
System.out.println(index);
}
});
}
//定长线程池
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);
for(int i = 0; i < 10; i++) {
final int index = i;
fixedThreadPool.execute(new Runnable () {
public void run () {
System.out.println(index);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
//定长线程池支持定时和周期性任务
ScheduledExecutorService scheduleThreadPool = Executors.newScheduledThreadPool(5);
scheduleThreadPool.schedule(new Runnable() {
public void run() {
System.out.println("delay 3 seconds");
}
}, 3, TimeUnit.SECONDS);
//单线程化线程池
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
for(int i = 0; i < 10; i++) {
final int index = i;
singleThreadExecutor.execute(new Runnable() {
public void run() {
try {
System.out.println(index);
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
}