
java多线程编程
小白不想当码农
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
吐血带你分析AQS源码!!!
啥是AQS呢?AQS是一个用来构建锁和同步器的框架,可以帮助我们快速构建锁和同步队列器,ReebtrantLock,CountDownLatch,ReentrantWriteLock等都是基于AQS实现。AQS底层使用双端队列,CAS操作实现先来看一下AQS中重要的属性//双端队列的头节点,是当前共享资源的持有线程,不再阻塞队列之内private transient volatile Node head;//阻塞队列的尾节点private transient volatile Node ta原创 2020-08-01 22:03:41 · 201 阅读 · 0 评论 -
并发下的Integer陷阱
自动装箱的陷阱:https://blog.youkuaiyun.com/weixin_44799092/article/details/107322013今天在阅读 《实战java高并发》的时候看到一个案例,特此记录public class BadLockInteger implements Runnable{ public static Integer i=0; static BadLockInteger instance=new BadLockInteger(); @Override原创 2020-07-19 15:12:04 · 421 阅读 · 0 评论 -
synchronized 加锁
处理器层面加锁 :刷新处理器缓存刷新处理器缓存处理器通过缓存一致化协议,从除自身外的其他处理器的高速缓存中读取数据,并将结果更新到自己的缓存中锁的释放:冲刷处理器缓存冲刷处理器缓存将对变量的修改结果写入缓存或者主存中,而不是在寄存器或者写缓冲器中JMM加锁:清空工作内存中该变量的副本,从主内存中读取锁释放:将变量写回主内存中,并且通知其他线程的工作线程该变量的副本无效...原创 2020-06-19 15:28:46 · 244 阅读 · 0 评论 -
wait(),notify()方法详解
使用场景在单线程下,要实现程序执行某操作必须满足某一条件可以将这个操作放在一格if的语句体中。在多线程下,一个线程执行的某个操作必须满足某个条件,且这个条件不满足只是暂时的,这个条件只是需要另一个线程来改变。在这种情况下,我们可以在条件不满足的时候将线程暂停进入WAIT,当条件满足的时候,再去将线程唤醒。使用wait()和notify()实现上述场景someObject.wait()/someObject.wait(long)每一个对象都有此方法,对象调用此方法会使得对象所在的线程暂停进入WAIT原创 2020-05-23 22:13:18 · 1162 阅读 · 0 评论 -
多线程之内存屏障
内存屏障线程的同步机制底层实现依靠的就是:内存屏障我们知道保障可见性依靠 刷新处理器缓存和冲刷处理器缓存。锁的获得释放,volatile关键字都可以保障对共享变量的操作包含这俩个动作含义:内存屏障是对一类仅针对读写指令的跨处理架构的比较底层的抽象,它被插到俩个指令之间,来禁止编译器,处理器重排序,其伴随着 冲刷处理器缓存和刷新处理器缓存分类(处理器层面):load barrier --》读屏障 ,存储屏障作用:刷新处理器缓存,阻止屏障俩侧的指令重排序jvm会在申请锁指令之后插入load原创 2020-05-13 12:49:39 · 468 阅读 · 0 评论 -
浅谈线程安全问题的几个方面
线程安全问题的三个方面原子性可见性有序性导致线程安全问题的原因多个线程在不加任认为限制的情况下,并非的操作同一个共享变量原子性俩个含义:对共享变量的访问操作在其执行线程之外的其他线程下来看,该操作要么完成,要么没完成。即其他线程不会看到该操作的中间部分对同一共享变量的俩个原子操作不可以交错进行,一次只能进行一个java中实现原子性锁:锁是排他性资源。为共享变量加锁,可以保证共享变量在任意时刻只能被一个线程所访问CAS: 处理器实现的一种锁机制,它在硬件方面保障原子性…原创 2020-05-12 10:12:34 · 469 阅读 · 0 评论 -
线程安全之重排序
重排序一个处理器上面执行的多种操作,在其他处理器看来与该处理器上面程序指定的操作顺序不同重排序是处理器,编译器,存储子系统为了改善程序执行性能而对内存访问操作执行的操作,它可以在不影响程序(单线程下)正确执行的条件改善程序执行性能分类:指令重排序存储子系统重排序(内存重排序)一些与重排序相关的概念源代码顺序:源代码中所指定的内存访问操作程序顺序:给定处理器中目标代码的执行顺序执行顺序:处理器中代码的真正执行顺序感知顺序:给定的处理器感知到的该处理器和其他处理器的内存访问操作指令原创 2020-05-11 14:23:45 · 566 阅读 · 0 评论