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

关注

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

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

天美麻花星空影视免费观看电视剧 | 美国色情巜教练和女警官视频| 男生把小因因放到女生困里视频| 一家乱战1-13集大| 成品网站免费直播有哪些平台推荐 | 成品PPT网站大片入口| 电影《乳妓》在线观看| 《关照丈夫的上司》大结局| 《深度》大尺度床戏| 《下班后的办公室》上线| 《相濡以沫的夜晚》动漫免费全部| 善良的嫂子| 十八岁完整版高清免费观看| 《好好疼爱里面》免费看| 《医务室上垒》动漫全集在线观看| 120分钟做爰A片免费| 欲奴性猛交2无删减| 《我们不是亲兄妹》动浸播放 | 光溜溜瑜伽全套视频大全| 夜生活在线观看免费观看电视剧 | 公交车被上高湖了还能坐吗小说| 《黑人性奴2》免费观看| 《准儿媳》在线观看完整版免费| 《甜蜜惩罚2》第二季的剧情| 夫妻生活视频曝光| 短视频| 強暴強轰犯された人妻| 黑瓜网-每日大赛 抖音风合集| 扒开内裤边吃奶XXOO外国网站| 我的老师中韩双字ID| 少女配狗播放视频| 无法抗拒的你ID中字| 国产X9X9X9X9X9X任意...| 看到老妈洗澡忍不住怎么办| 图书馆H含着粉嫩小奶头H漫画| 公交车NP粗暴H强J玩弄| 在线天堂WWW在线观看图片| 美女被咬小头头视频大全图片| 美女被咬小头头视频大全| 美女和帅哥一起努力生产豆浆 | 《不再是朋友的夜晚第二季》