
java并发体系
文章平均质量分 95
xiejunxing
这个作者很懒,什么都没留下…
展开
-
Java并发体系-第四阶段-AQS源码解读(有时间就了解一下)
调用unpark(thread)方法后,就会将thread线程的许可permit设置成1(注意多次调用unpark方法,不会累加,permit值还是1)会自动唤醒thread线程,即之前阻塞中的LockSupport.park()方法会立即返回。permit默认是0,所以一开始调用park()方法,当前线程就会阻塞,直到别的线程将当前线程的permit设置为1时,park方法会被唤醒,然后会将permit再次设置为0并返回。permit只有两个值1和零,默认是零。permit相当于1,0的开关,默认是0,原创 2023-06-04 09:44:40 · 314 阅读 · 0 评论 -
Java并发体系-第三阶段-JUC并发包-[2]-CompleableFuture,SynchronousQueue
java7中引入了一种新的可重复使用的同步屏障,称为移相器Phaser。Phaser拥有与和类似的功能.但是这个类提供了更加灵活的应用。CountDownLatch和CyclicBarrier都是只适用于固定数量的参与者。移相器适用于可变数目的屏障,在这个意义上,可以在任何时间注册新的参与者。并且在抵达屏障是可以注销已经注册的参与者。因此,注册到同步移相器的参与者的数目可能会随着时间的推移而变化。原创 2023-06-02 18:58:15 · 679 阅读 · 0 评论 -
Java并发体系-第三阶段-JUC并发包-[1]
StampedLock,ReadWriteLock,Condition,Semaphore,ReentrantLock,CyclicBarrier,CountDownLatch原创 2023-06-02 10:23:08 · 315 阅读 · 0 评论 -
Java并发体系-第二阶段-锁与同步-[3](仅做了解吧不好理解)
字面意思就是锁记录。通过对Java对象头的介绍可以看到锁信息也是存在于对象的mark word中的。当对象状态为偏向锁(biasable)时,mark word存储的是偏向的线程ID;当状态为轻量级锁(lightweight locked)时,mark word存储的是指向线程栈中的指针;当状态为重量级锁(inflated)时,为指向堆中的monitor对象的指针。原创 2023-05-29 20:24:52 · 419 阅读 · 0 评论 -
Java并发体系-锁与同步-[2]
1、为了实现MESI协议,有两个配套的专业机制要给大家说一下:flush处理器缓存、refresh处理器缓存。flush处理器缓存,他的意思就是把自己更新的值刷新到高速缓存里去(或者是主内存),因为必须要刷到高速缓存(或者是主内存)里,才有可能在后续通过一些特殊的机制让其他的处理器从自己的高速缓存(或者是主内存)里读取到更新的值除了flush以外,他还会发送一个消息到总线(bus),通知其他处理器,某个变量的值被他给修改了。原创 2023-05-26 10:07:28 · 1006 阅读 · 0 评论 -
Java并发体系-锁与同步-[1]
冯诺依曼,提出计算机由五大组成部分,输入设备,输出设备,存储器,控制器,运算器。输入设备:鼠标,键盘等等输出设备:显示器,打印机等等存储器:内存条运算器和控制器组成CPU一方面,程序员需要JMM提供一个强的内存模型来编写代码;另一方面,编译器和处理器希望JMM对它们的束缚越少越好,这样它们就可以最可能多的做优化来提高性能,希望的是一个弱的内存模型。JMM考虑了这两种需求,并且找到了平衡点,对编译器和处理器来说,原创 2023-05-25 19:10:49 · 659 阅读 · 0 评论