BlockingCollection可实现单体程序内队列功能,适合写日志、发邮件等并发高可异步的操作 BlockingCollection是一个线程安全的集合类,可提供以下功能: 实现制造者-使用者模式。 通过多线程并发添加和获取项。 可选最大容量。 集合为空或已满时通过插入和移除操作进行阻塞。 插 ...
分类:
其他好文 时间:
2020-04-21 12:40:12
阅读次数:
58
synchronized synchronized关键字锁定的是对象不是代码块,demo中锁的是object对象的实例 锁定的对象有两种:1.类的实例 2.类对象 加synchronized关键字之后不一定能实现线程安全,具体还要看锁定的对象是否唯一。 看个demo: private int cou ...
分类:
其他好文 时间:
2020-04-20 23:38:27
阅读次数:
64
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 JDK1.8 之前 HashMap 由 数组+链表 组成的 ...
分类:
其他好文 时间:
2020-04-20 22:01:12
阅读次数:
71
ConcurrentHashMap是Java中的一个线程安全且高效的HashMap实现。 在JDK1.7中ConcurrentHashMap采用了数组+Segment分段锁的方式实现。 1.Segment(分段锁) 初始容量 16 ConcurrentHashMap中的分段锁称为Segment,它即 ...
分类:
其他好文 时间:
2020-04-20 14:11:47
阅读次数:
69
浅谈Vector 在之前的文章中,我们已经说过线程不安全的ArrayList和LinkedList,今天我们来讲讲一个线程安全的列表容器,他就是Vector,他的底层和ArrayList一样使用数组来实现,不过不同于ArrayList的线程不安全,Vector中的公开方法基本都是带有synchron ...
分类:
其他好文 时间:
2020-04-20 13:28:42
阅读次数:
45
CurrentHashMap、HashMap、HashTable的区别 HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11, ...
分类:
其他好文 时间:
2020-04-19 19:43:28
阅读次数:
82
ConcurrentHashMap是一个经常被使用的数据结构,它在线程安全的基础上提供了更好的写并发能力。ConcurrentHashMap跟Map有很大的不同,内部大量使用volatile和CAS等减少锁竞争,当然代码也比HashMap难理解的多,本章基于JDK1.8对ConcurrentHash... ...
分类:
其他好文 时间:
2020-04-19 00:43:45
阅读次数:
64
面向对象第二单元总结 设计策略 调度器 负责协调输入线程和电梯线程,维护等待乘客的队列,负责给电梯分配任务,负责分析乘客应该在哪层换乘。电梯可以从队列中获取乘客的信息,输入部分也可以向队列中添加乘客的信息。调度器要保证两个部分是线程安全的。 电梯 维护自己从调度器获取的等待乘客的队列,可以从调度器获 ...
分类:
其他好文 时间:
2020-04-18 23:04:18
阅读次数:
67
在初步认识了面向对象思想后,立刻进入了多线程的学习,本单元的难点主要是锁的理解,需要保证线程安全的同时防止死锁的发生,也要尽可能缩小锁的范围,提高性能。这一单元以电梯为载体,让我们从生活出发,从电梯运行的角度理解多线程,同时学习和应用生产者-消费者模式来帮助我们编程。在一部可捎带电梯的基础上越来越贴 ...
分类:
编程语言 时间:
2020-04-18 13:53:21
阅读次数:
69
JS中”==”与“ ”的区别 双等号==: (1)如果两个值类型相同,再进行三个等号( )的比较 (2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较: 1)如果一个是null,一个是undefined,那么相等 2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较 ...
分类:
其他好文 时间:
2020-04-18 12:04:35
阅读次数:
75