java多线程体系

首先,我们看一张多线程体系结构图(图是粘贴网上的,非自己总结).
java多线程体系
文章图片
1、线程安全方法讨论 1.1互斥同步(悲观锁)
Java在JDK1.5之前都是靠synchronized关键字保证同步的。可以确保无论哪个线程持有守护变量的锁,都采用独占的方式来访问这些变量。如果出现多个线程同时访问锁,当一个线程占有锁,其他线程将被挂起,无法执行下去。在挂起和恢复执行过程中存在着很大的开销。
独占锁是一种悲观锁,synchronized就是一种独占锁,它假设最坏的情况,并且只有在确保其它线程不会造成干扰的情况下执行,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁
1.2非阻塞同步
常见的非阻塞同步有:
a.volatile 变量:轻量级的线程同步,不会引起线程调度,提供可见性,但是不提供原子性
【java多线程体系】b.CAS 原子指令:轻量级线程同步,不会引起线程调度,提供可见性和原子性

    推荐阅读