多线程、并发
一指禅心
这个作者很懒,什么都没留下…
展开
-
并发工具类及线程池
同步辅助类 CyclicBarrier 是一个同步辅助工具类,它允许一组线程互相等待直到所有的线程达到一个公共屏障点。在程序中由固定的线程数量,这些线程有时必须等待彼此。 应用场景: 分组计算然后统计。 理解:人满发车(20) 底层设计: ReentrantLock 和 condition final ReentrantLock lock = this.lock; lock.lock(); CountDownLatch 允许一个或多个线程一直等待,直到其他线程的操作执原创 2020-09-04 10:30:14 · 82 阅读 · 0 评论 -
并发容器(2)
什么是同步容器 同步容器通过synchronized关键字修饰容器,保证同一时间内只有一个线程在使用容器,从而使得容器线程安全。 什么是并发容器 允许多线程同时使用容器,并且保证线程安全。核心:锁,cas,cow,分段锁。 同步容器 vector: stack: Stack实现的是先进后出的栈,入栈出栈都使用synchronized hashTable: 实现Map接口,实现的功能和HashMap基本一致(HashTable 不可出现null,HashMap键值可以使用null); hashTab原创 2020-07-07 23:06:20 · 80 阅读 · 0 评论 -
java 锁及并发容器
JAVA内存模型(JMM) 为了保证共享内存的正确性(可见性、有序性、原子性)内存模型中定义了共享内存系统中多线程程序读写操作的行为规范 JMM : 一种符合内存模型结构,屏蔽了各种硬件和操作系统的访问差异,保证了java程序在各种平台下对内存的访问都能保证效果一致的机制规范 限制处理器优化(重排序) 使用内存屏障 原子性:(处理器优化) 指一个操作中CPU不可以在中途暂停在调度,不被中断操作,要不执行完成,要不就不执行。 可见性: (缓存一致性问题) 多个线程访问同一个变量时,一个线程如果修改了这.原创 2020-07-06 21:44:18 · 354 阅读 · 0 评论 -
java多线程锁四种状态
前言 在java中面试最长问到的多线程并发问题,本文做了最简单的自我学习记录,将java多线程中锁的转变状态过程做以记录 ,后面还会对多线程及并发方面做更详细的总结。 对象锁四种状态 无锁 在对象刚开始实例化的时候,锁的状态是无锁的,是可偏向的。 偏向锁 情况一 当只有一个Thread#1线程开始进入临界区时,JVM会将lockObject的对象头Mark Word的锁标志位设为“01”,同时会用CAS操作把Thread#1的线程ID记录到Mark Word中,此时进入偏向模式。所谓“偏向”,原创 2020-05-20 11:17:04 · 503 阅读 · 0 评论