Posted by 瞿广 Monday, July 29, 2019 Last Modified on Saturday, July 27, 2019
Posted by 瞿广 Sunday, July 28, 2019 Last Modified on Saturday, July 27, 2019
Posted by 瞿广 Saturday, July 27, 2019
前面我们多次提到一个累加器的例子,示例代码如下。在这个例子中,add10K() 这个方法不是线程安全的,问题就出在变量 count 的可见性和 count+=1 的原子性上。可见性问题可以用 volatile 来解决,而原子性问题我们前面一直都是采用的互斥锁方案。
add10K()
count+=1
Posted by 瞿广 Friday, July 26, 2019 Last Modified on Saturday, July 27, 2019
在前面《08 | 管程:并发编程的万能钥 匙》中我们提到过在并发编程领域,有 两大核心问题:一个是互斥,即同一时刻只允许一个线程 访问共享资源;另一个是同步,即线程之间如何通信、协作。这两大问题,管程都是能够解决 的。Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程,其中 Lock 用于解决互斥 问题,Condition 用于解决同步问题。
Software Developer, Open Source Enthusiast and Life Adventurer