Java中的线程安全集合类
线程安全集合类
包括:
StringBuffer: 线程安全
String: 不可变的类 , 都线程安全
Random: 线程安全
Vector: 实现了List,并且线程安全
Hashtable: 实现了Map,并且线程安全
jdk5.0新增的线程安全集合类
ConcurrentHashMap: 实现了Map,并且线程安全
ConcurrentSkipListMap: 实现了Map(可排序),并且线程安全
CopyOnWriteArrayList: 实现了List,并且线程安全
阻塞队列(BlockingQueue)的应用
**队列:**FIFO,即first in first out,先进先出原则
例:
private static BlockingQueue<Product> queue = new ArrayBlockingQueue<>(5);
public static void main(String[] args) {// 生产者线程new Thread(()->{for (int i = 0; i < 10; i++) {Product p = new Product(i);System.out.println(Thread.currentThread().getName()+"生产了:"+p);try {queue.put(p);} catch (InterruptedException e) {e.printStackTrace();}}}).start();// 消费者线程for (int j = 0; j < 5; j++) {new Thread(()->{for (int i = 0; i < 2; i++) {try {Product p = queue.take();System.out.println(Thread.currentThread().getName()+"消费了:"+p);} catch (InterruptedException e) {e.printStackTrace();}}}).start();}}
运行结果:
Thread-0生产了:Product{i=0}
Thread-0生产了:Product{i=1}
Thread-1消费了:Product{i=0}
Thread-0生产了:Product{i=2}
Thread-2消费了:Product{i=1}
Thread-3消费了:Product{i=2}
Thread-0生产了:Product{i=3}
Thread-0生产了:Product{i=4}
Thread-4消费了:Product{i=3}
Thread-5消费了:Product{i=4}
Thread-0生产了:Product{i=5}
Thread-0生产了:Product{i=6}
Thread-1消费了:Product{i=5}
Thread-2消费了:Product{i=6}
Thread-0生产了:Product{i=7}
Thread-0生产了:Product{i=8}
Thread-0生产了:Product{i=9}
Thread-3消费了:Product{i=7}
Thread-5消费了:Product{i=9}
Thread-4消费了:Product{i=8}
Java中的线程安全集合类相关推荐
- Java中的线程基础知识
Java中的线程基础知识 1.线程概念 线程是程序运行的基本执行单元.当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个 ...
- java中的线程安全是什么?
java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问. 什么 ...
- 关于Java中的线程安全(线程同步)
java中的线程安全是什么:就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫线 ...
- 四十七、面试前,必须搞懂Java中的线程池ThreadPoolExecutor(上篇)
@Author:Runsen @Date:2020/6/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- Java 中的线程安全的类
Java 中的线程安全的类 3 个线程安全的类 它们对应的非线程安全的类 它们延伸的类 其它 它们对应的非线程安全的类 3 个线程安全的类 Java 中的 3 个基本的线程安全的类为:Hashta ...
- 不允许使用java方式启动_细品 Java 中启动线程的正确和错误方式
细品 Java 中启动线程的正确和错误方式 前文回顾详细分析 Java 中实现多线程的方法有几种?(从本质上出发) start 方法和 run 方法的比较 代码演示:/** * * start() 和 ...
- 如何在java中实现线程_用代码说话:如何在Java中实现线程
并发编程是Java语言的重要特性之一,"如何在Java中实现线程"是学习并发编程的入门知识,也是Java工程师面试必备的基础知识.本文从线程说起,然后用代码说明如何在Java中实现 ...
- Java中一个线程只有六个状态。至于阻塞、可运行、挂起状态都是人们为了便于理解,自己加上去的。...
java中,线程的状态使用一个枚举类型来描述的.这个枚举一共有6个值: NEW(新建).RUNNABLE(运行).BLOCKED(锁池).TIMED_WAITING(定时等待).WAITING(等待) ...
- 万字图文 | 学会Java中的线程池,这一篇也许就够了!
来源:一枝花算不算浪漫 线程池原理思维导图.png 前言 Java中的线程池已经不是什么神秘的技术了,相信在看的读者在项目中也都有使用过.关于线程池的文章也是数不胜数,我们站在巨人的肩膀上来再次梳理一 ...
最新文章
- Alpha冲刺(9/10)
- 服务器与ssl证书有关吗,选择网站SSL证书和服务器位置有没有关系和影响
- \\ n和\\ r之间的区别?
- 安卓一键新机_安卓福音!微信终于推出这个功能,再也不用羡慕iPhone
- 3分钟了解dubbo服务调试管理实用命令
- 【WEB安全】flask不出网回显方式
- c# Sockect 通信
- vue全局组件与局部组件
- 工程师和科学家有什么区别
- 高性能框架gevent和gunicorn在web上的应用及性能测试
- jQuery学习笔记(三):选择器总结
- linux ls-la/boot,CentOS系统启动/boot/vmlinuz修复(实验)
- 三分钟细数几款可视化前端开发工具
- STM8S103之串口查询发送+中断发送
- linux局域网聊天软件,自制局域网内聊天与图片传输小软件
- 无线射频识别的应用方案有哪些?
- 电缆故障测试仪的基本原理与组成——TFN DG15M电缆故障测试仪
- linux系统查看电脑cpu,linux系统怎么查看自己电脑的cpu位数
- NOIP提高组初赛[选择题知识点汇总]
- 你知道这个提高 Java 单元测试效率的 IDEA 插件吗