java多线程体系

首先,我们看一张多线程体系结构图(图是粘贴网上的,非自己总结).

1、线程安全方法讨论

1.1互斥同步(悲观锁)

       Java在JDK1.5之前都是靠synchronized关键字保证同步的。可以确保无论哪个线程持有守护变量的锁,都采用独占的方式来访问这些变量。如果出现多个线程同时访问锁,当一个线程占有锁,其他线程将被挂起,无法执行下去。在挂起和恢复执行过程中存在着很大的开销。

       独占锁是一种悲观锁,synchronized就是一种独占锁,它假设最坏的情况,并且只有在确保其它线程不会造成干扰的情况下执行,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁

1.2非阻塞同步

常见的非阻塞同步有:

      a.volatile 变量:轻量级的线程同步,不会引起线程调度,提供可见性,但是不提供原子性

      b.CAS 原子指令:轻量级线程同步,不会引起线程调度,提供可见性和原子性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容