随笔分类 - Java并发编程的艺术
摘要:ReentrantLock与synchronized一样都可以用来控制多线线程对共享资源的访问。 synchronized关键字是隐式的获得锁,即进入synchronized方法或者synchronized代码会自动的获得锁,离开同步方法或者同步代码块自动释放锁。 ReentrantLock相对于s
阅读全文
摘要:原子操作atomic operation是“不可中断的一个或者一系列操作”。 1、术语 缓存行: 缓存的最小操作单位。 比较并交换(Compare and Swap): CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较旧值有没有变化,如果没有变化,才交换成新值,旧值
阅读全文
摘要:1、在多线程并发编程中synchronized一直被称为重量级锁,但是随着Java se1.6 对synchronized进行了各种优化后,有些情况下它就并不那么重了。 synchronized实现同步的基础:每个对象都可以作为锁,具体分为三种情况: 对于普通同步方法,锁的是自己实力对象 对于静态同
阅读全文
摘要:volatile是轻量级的synchronized,它在多处理开发中保证了共享变量的“可见性”。 可见性是指当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低。 成本低的原因是:volatile
阅读全文