国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > 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线程池的工作队列介绍,相信大家已经对这么工作队列有了初步的认知,并能明确它们分别的使用场景。其他的一些工作队列,大家也可以课后查询资料。

关注

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

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

《诱人的女房东3》| 朋友的妈妈7中字谜| 欧美人动物PPT免费模板大全| 妈妈装睡配合孩子阴阳调和| 叶子湄| 兄弟的老婆4免费观看电视剧| 灭火宝贝在线观看完整免费满天星| 一枪战三母2-1免费观看央视网| 《十二寡妇肉床艳史》| 出差被老板摸高潮了三次| 成全影视大全免费追剧大全| 黑料门-今日黑料-最新反差免| 情趣内衣| 海角社区-吃瓜黑料-爆料海角| 偷偷在线观看免费的电视剧最新| 孤男寡女免费观看高清电视剧狂飙| 学长让我夹跳D上课不能掉| 苍井空人体写真| 女人做爰高潮全过| 公在厨房撕开奶罩吸奶头 | 《请好好疼爱里面》免费观看| 开处出血视频| 两领导在车上吃我的奶| 《性房纵欲》在线观看| 《女仆教育》动漫第一季| 二人努力生猴子免费观看| 女孩自愈视频免费观看第二集 | 《妻子的肉体偿还》5| 亚洲日产精品一二三四区| 姐姐片多多免费高清电视剧叶玉卿 | 绿色产品A级与AA级哪里不同| 老师穿黑色双开真丝旗袍如何穿芭.| 白日梦我电视剧免费观看完整版| 国产精品久久久久久精品| 麻花星空MV高清在线播放| 欧美大片PPT免费PPT| 《年轻朋友的妻子3》| 女性扒开大腿内侧小肚子痒| 《大尺度吃奶做爰》电影| 巨乳美女| 老公在怀里吃奶像个小孩子