阻塞队列和线程池

2021-08-23  本文已影响0人  Dalvik_

1.阻塞队列

1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。
2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。
在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。

2.线程池

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,
      long keepAliveTime,TimeUnit unit,
      BlockingQueue<Runnable> workQueue,
      ThreadFactory threadFactory,
      RejectedExecutionHandler handler)

1.corePoolSize : 线程池中的核心线程数
2.maximumPoolSize : 线程池中允许的最大线程数
3.keepAliveTime : 线程空闲时的存活时间
4.TimeUnit : keepAliveTime的时间单位
5.workQueue : workQueue必须是BlockingQueue阻塞队列。当线程池中的线程数超过它的corePoolSize的时候,线程会进入阻塞队列进行阻塞等待
6.threadFactory : 创建线程的工厂,通过自定义的线程工厂可以给每个新建的线程设置一个具有识别度的线程名,当然还可以更加自由的对线程做更多的设置
7.RejectedExecutionHandler : 线程池的饱和策略,当阻塞队列满了,且没有空闲的工作线程,如果继续提交任务,必须采取一种策略处理该任务

上一篇下一篇

猜你喜欢

热点阅读