创建线程池的几种方式
作者:bin创建一个可缓存线程池,应用中存在的线程数可以无限大
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
//1.创建一个可缓存线程池,应用中存在的线程数可以无限大
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
//2.描述:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
//ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(2);
for(int i=0;i<10;i++)
{
final int index=i;
newCachedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println("nihao" + index);
}
});
}
创建一个定长线程池,支持定时及周期性任务执行。
//定时调度线程
ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(2);
for(int i=0;i<10;i++)
{
final int index=i;
//延迟三秒执行
newScheduledThreadPool.schedule(new Runnable() {
@Override
public void run() {
System.out.println("nihao" + index);
}
}, 3, TimeUnit.SECONDS);
}
创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
/**
* 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,
* 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
*/
ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
for(int i=0;i<10;i++)
{
final int index=i;
newSingleThreadExecutor.execute(new Runnable() {
@Override
public void run() {
System.out.println("nihao" + index);
}
});
}