热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

线程安全列表

2019独角兽企业重金招聘Python工程师标准一、非阻塞式线程安全列表ConcurrentLinkedDequeConcurrentLinkedDequed

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、非阻塞式线程安全列表 ConcurrentLinkedDeque


ConcurrentLinkedDeque deque &#61; new ConcurrentLinkedDeque<>();for (int i&#61;0;i<10;i&#43;&#43;){Thread t1 &#61; new Thread(() -> {for (int j &#61; 0; j <10000; j&#43;&#43;) {deque.add(String.valueOf(j));}});t1.start();t1.join();
}System.out.println(deque.size()); //100000

deque.getFirst(); deque.getLast();

//返回列表中的第一个和最后一个。元素不会被移除&#xff0c;如果列表为空将抛出NoSuchElementException

deque.peek();deque.peekFirst();deque.peekLast();

  //返回中第一个和最后一个&#xff0c;元素不会被移除&#xff0c;如果列表为空返回null

deque.pollLast();deque.pollFirst();

//返回列表中第一个和最后一个&#xff0c;并移除元素。不会抛出异常

deque.remove();deque.removeFirst();deque.removeLast();

  //返回第一个和最后一个&#xff0c;并移除元素。列表为空将抛出异常

 

二、阻塞式线程列表

LinkedBlockingDeque blockingDeque &#61; new LinkedBlockingDeque<>();


阻塞与非阻塞的主要区别&#xff1a;阻塞式列表在插入和删除操作时&#xff0c;如果列表已满或为空&#xff0c;操作不被立即执行&#xff0c;而是将调用这个操作的线程阻塞
直到操作可以执行成功。
 

三、按优先级排序的阻塞式线程安全列表 PriorityBlockingQueue

PriorityBlockingQueue blockingQueue &#61; new PriorityBlockingQueue<>();

PriorityBlockingQueue 中的每个元素都要实现 Comparable接口。元素越大越靠后

特性&#xff1a;它是阻塞数据结构。当它的方法被调用并且不能立即执行时&#xff0c;调用这个方法的线程将被阻塞直到方法执行成功。

四、带延迟元素的线程安全列表

DelayQueue delayQueue &#61; new DelayQueue<>();


 1.它可以存放带有激活日期的元素&#xff0c;当从该列表取取值时&#xff0c;未来的元素将被忽略
 2.它的元素必须实现  Delayed 接口

五、并发随机数 ThreadLocalRandom

 

ThreadLocalRandom.current().nextInt();

 

 

 

 


转:https://my.oschina.net/u/2552286/blog/1924808



推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
author-avatar
我摸你马匹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有