Java并发编程--线程池

Executor框架
Executors.newXXX即可创建线程池

固定线程池
Executors.newFixedThreadPool(int threads)
创建一个固定线程数量的线程池
public static ExecutorService newFixedThreadPool(int nThreads){
return new ThreadPoolExecutor(nThreads,nThreads,0L,TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
}


特点: 固定大小
corePoolSize和maximumPoolSize都为传进的参数
keepAliveTime为0,意味着多余线程立即停止,但其实这个值是无效的
阻塞队列用LinkedBlockingQueue,无界队列


缓存线程池
Executors.newCachedThreadPool()
public static ExecutorService newCachedThreadPool(){
return new ThreadPoolExecutor(0,Integer.MAX_VALUE,60L,TimeUnit.MILLISECONDS,new SynchronousQueue<Runnable>());}


特点: 无限扩大
比较适合处理执行时间较短的任务
线程有60s空闲就被杀死
采用SynchronousQueue装等待的任务,有任务来就必须找到工作线程处理,没有就新建

单个线程池
public static ExecutorService newSingleThreadExecutor(){    
return new ThreadPoolExecutor(1,1,0L,TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>());
}


特点: 工作线程只有一个
使用LinkedBlockingQueue队列
确保所有任务都由一个线程执行,不需考虑同步问题

延迟或定时线程池
延迟delay时间运行,单位为unit
public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit);public <V> ScheduledFuture<V> schedule(Callable<V> callable,   long delay, TimeUnit unit);



延迟initialDelay时间,之后每隔period时间运行一次
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,  long initialDelay,  long period,  TimeUnit unit);public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,     long initialDelay,     long delay,     TimeUnit unit);







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值