【Java 多线程 1】java多线程并发编程

🍅 Java学习路线:搬砖工逆袭Java架构师

🍅 简介:Java领域优质创作者🏆、CSDN哪吒公众号作者✌ 、Java架构师奋斗者💪

🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步 

🍅 欢迎点赞 👍 收藏 ⭐留言 📝  

目录

一、前言

线程的五种状态

二、悲观锁与乐观锁

1、悲观锁

2、乐观锁

三、CAS

1、JDK1.5,java.util.concurrent

2、CAS的全称是Compare And Swap

3、代码实例

4、CAS带来的问题

四、多线程锁的升级原理是什么?

1、无锁

2、偏向锁

3、轻量级锁

4、重量级锁

5、锁状态对比

6、锁消除

五、Synchronized的特性

1、可重入性

2、不可中断性

六、Synchronized保证了原子性、可见性、有序性

1、Synchronized保证原子性

2、Synchronized保证可见性

3、Synchronized保证有序性

七、synchronized的三种应用方式

1、修饰普通方法

2、修饰静态方法

3、修饰同步代码块

八、理解Java对象头与Monitor

九、synchronized与等待唤醒机制

1、notify() 和 notifyAll() 有什么区别?

2、execute()和submit()有什么区别?

3、sleep() 和 wait() 有什么区别? 

十、synchronized 和 volatile 的区别是什么?

十一、ReentrantReadWriteLock简介


一、前言

线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要原因有两点,一是存在共享数据,二是存在多条线程操作共享数据。当存在多个线程操作共享数据时,需要保证同一时刻有且仅有一个线程在操作共享数据,其它线程必须等到该线程处理完数据之后才能进行,这种方式有个高尚的名词叫互斥锁,即能达到互斥访问的目的的锁。在Java中关键字synchronized可以保证在同一个时刻,只有一个线程可以执行某个方法或某个代码块。同时我们还应该注意到synchronized另外一个重要的作用,synchronized可保证一个线程的变化被其它线程所看到(保证可见性,完全可以替代volatile),这点很重要。

线程的五种状态

  • 77
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值