韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > java基础 > java线程池的工作队列有哪几个

java线程池的工作队列有哪几个

java线程池的工作队列

头像

小妮浅浅

2021-01-11 13:46:226299浏览 · 0收藏 · 0评论


在线程池中的某一任务完成后,我们不知道新的任务已经到达等待处理,这时候就要加入工作队列的原理了。就线程池里面而言,分为许多工作队列等待我们去处理任务,这里需要我们对这些队列有一个初步的掌握。下面我们就线程池工作队列概念进行讲解,然后带来几种常见的队伍进行分享。

1.工作队列概念

通常想要的是同一组固定的工作线程相结合的工作队列,它使用 wait() 和 notify() 来通知等待线程新的工作已经到达了。该工作队列通常被实现成具有相关监视器对象的某种链表。尽管 Thread API 没有对使用Runnable 接口强加特殊要求,但使用 Runnable 对象队列的这种模式是调度程序和工作队列的公共约定。

public class WorkQueue
{
    private final int nThreads;
    private final PoolWorker[] threads;
    private final LinkedList queue;
    public WorkQueue(int nThreads)
    {
        this.nThreads = nThreads;
        queue = new LinkedList();
        threads = new PoolWorker[nThreads];
        for (int i=0; i<nThreads; i++) {
            threads[i] = new PoolWorker();
            threads[i].start();
        }
    }
    public void execute(Runnable r) {
        synchronized(queue) {
            queue.addLast(r);
            queue.notify();
        }
    }
    private class PoolWorker extends Thread {
        public void run() {
            Runnable r;
            while (true) {
                synchronized(queue) {
                    while (queue.isEmpty()) {
                        try
                        {
                            queue.wait();
                        }
                        catch (InterruptedException ignored)
                        {
                        }
                    }
                    r = (Runnable) queue.removeFirst();
                }
                // If we don't catch RuntimeException, 
                // the pool could leak threads
                try {
                    r.run();
                }
                catch (RuntimeException e) {
                    // You might want to log something here
                }
            }
        }
    }

2.工作队列种类

1ArrayBlockingQueue

ArrayBlockingQueue(有界队列)是一个用数组实现的有界阻塞队列,按FIFO排序量。

2LinkedBlockingQueue

LinkedBlockingQueue(可设置容量队列)基于链表结构的阻塞队列,按FIFO排序任务,容量可以选择进行设置,不设置的话,将是一个无边界的阻塞队列,长度为Integer.MAX_VALUE,吞吐量通常要高于ArrayBlockingQuene;newFixedThreadPool线程池使用了这个队列

3DelayQueue

DelayQueue(延迟队列)是一个任务定时周期的延迟执行的队列。根据指定的执行时间从小到大排序,否则根据插入到队列的先后排序。newScheduledThreadPool线程池使用了这个队列。

以上就是java线程池的工作队列介绍,相信大家已经对这么工作队列有了初步的认知,并能明确它们分别的使用场景。其他的一些工作队列,大家也可以课后查询资料。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

上位(H)笔趣阁| 摸摸大扔子图片真实| 午马影视免费观看电视剧| 乐可小说| 中字HD人妻の亂倫2| 45岁老阿姨喷了三次尿素乳育| 韩国伦理片手机在线观看播放| 美女和男生一起努力的生孩子视频. | 儿媳的报复(公媳)(一颗发财树..| 苍空电影全集| 豆传媒剧国产MV有什么特点| 适合深夜看的脸红的小说| 初中女生光溜溜身子| 亚洲图片| 爸爸汆肉的日常| 做爰高潮A片(毛片)| 《酒店激战》动漫1-5集免费观.| 免费的行情网站WWW下载大全| 回娘家白天像父女晚上像夫妻| 在线观看免费高清视频大全追剧| 崔汝真| 韩国色情巜肉欲教室2| 小妈妈2免费观看完整电视剧 | 王叔我老公还在客厅呢什么小说| 他掀开裙子舌头伸进去添在线视频 | 老阿姨高清免费观看电视剧| 美女两个球球抖动抓球球视频| 潮湿的体温2| 女性抹胸开襟哺乳衣的注意事项| 上司人妻互换HD无码中文字幕| 狗和女人戴避孕套会传染吗| 免费观看已满十八岁电视剧日剧| 八戒八戒在线看免费观看电视剧| 我老公跟我一晚上用很多卫生纸| 精品无码人妻一区二区免费AV| 午夜成人理论片A片AAA软件| 三男一女CP免费观看电视剧大全| 下面的小嘴又饿了| 《丽贝卡的秘密》| 成品网站1.1.719| 内衣秀