专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java里面的线程池有哪些队列?(java线程池的用法)

temp10 2024-09-08 09:39:51 java教程 13 ℃ 0 评论

线程池有哪些队列?

Java里面线程池常用的队列主要有五种。

Java里面的线程池有哪些队列?(java线程池的用法)

·第一种叫做ArrayBlockingQueue,是基于数组结构的有界队列。这种队列按照先进先出的原则对元素进行排序,队列大小在队列创建的时候就已经指定了。当队列满的时候新的任务提交就会被阻塞,直到队列里边有空闲的位置。

·第二种就是LinkedBlockingQueue,是基于链表结构的阻塞队列。同样是按照先进先出的原则对元素进行排序。不过LinkedBlockingQueue的容量是可选的,如果不指定容量默认的就是Integer.MAX_VALUE,也就是2的3次方-1。因此这种队列更适合于入任务数量比较多的情况,因为它可以有效的去缓冲大量的任务。

·第三种就是SynchronousQueue,是一个不存储元素的阻塞队列。每一个插入操作必须等待一个相应的删除操作,反之亦然。这种队列可以保证任务不会被拒绝,但是可能会导致线程饥饿。静态工厂方法Executors.newCachedThreadPool其实就使用了这种队列。

·第四种就是PriorityBlockingQueue,是基于优先级堆的无界阻塞队列。这种队列可以按照元素的优先级进行出队操作,也就意味着优先级高的任务会优先被执行。

·第五种就是DelayQueue,是一个延迟对列。内部元素必须实现Delayed的接口,只有在延迟期满足条件的时候才会取出元素去执行。

Java里边的线程池常用的队列主要就是这5种。点击关注。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表