zoukankan      html  css  js  c++  java
  • 线程池中的工作队列

    1.接口BlockingQueue 双缓冲队列,内部使用两条队列,允许两个线程同时向队列做操作,一个存储,一个取出。 在保证并发安全的同时,提高了队列的存取效率。 该队列继承于Queue,所以遵循先进先出原则(FIFO)

    队列提供几种基本的操作:

    >添加元素(队尾)

    >移除元素(队头)

    >取出队头元素(不移除)

    该接口的实现类;

    1) ArrayBlockingQueue :采用数组实现,规定大小的BlockingQueue,其构造必须指定大小。所含的对象是FIFO顺序排序的。

    2) LinkedBlockingQueue:采用双链表实现,大小不规定,若在构造时指定大小,生成的BlockingQueue有大小限制,不指定大小,其大小由Integer.MAX_VALUE来决定。oxffffff

    所含对象时FIFO顺序排序的

    3)PriorityBlockingQueue:类似于LinkedBlockingQueue,但是所含对象的排序不是FIFO,而是依据对象的自然话排序或者构造函数的Comparator来决定的。

    4)SynchronousQueue:特殊的BlockingQueue,有删除操作和插入操作,必须是先插入再删除。包含两个线程,插入线程和移除线程,这个容器相当于通道 不保留元素,在多任务队列中,处理速度最快。

  • 相关阅读:
    Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置
    Linux 下使用网易的SMTP服务器 发送邮件
    Spring-boot 最小demo
    go build 时报错 cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
    spark-shell 执行脚本并传入参数
    JVM
    spark
    spark
    linux
    linux
  • 原文地址:https://www.cnblogs.com/jamers-rz/p/13599268.html
Copyright © 2011-2022 走看看