vue 同步代码块_Java基础第四讲-多线程-同步代码块synchoronized

40ae71ee1aa9828c6e3a9a2845f78f0b.png

1、同步代码块:synchronized

当多线程并发, 有多段代码同时执行时, 我们希望某一段代码执行的过程中CPU不要切换到其他线程工作. 这时就需要同步。

如果两段代码是同步的, 那么同一时间只能执行一段, 在一段代码没执行结束之前, 不会执行另外一段代码。

synchronized关键字加上一个锁对象就可以同步代码,这个锁对象可以是任意的一个对象,只要求是同一个就行。

7244986cbd1c3bd93768de552752ae6d.png

现在在主函数里面创建2条线程执行:如果不加synchronized(d),可能输出print1 和print2就会出现乱序的问题(你好呀TO)。

89512cb875aeb40a051a9781c1d729cf.png

2、同步方法:synchronized

使用synchronized关键字修饰一个方法, 该方法中所有的代码都是同步的。

5aa0af7239d74f23d2f0154d6b4a8996.png

注意:

非静态同步函数的锁是:this (因为创建的对象是同一个,此时的this就代表new的那个对象)

静态static的同步函数的锁是:字节码对象(因为使用 类名.方法 调用 ,类名是同一个)

3、线程安全

多线程并发操作同一数据时, 就有可能出现线程安全问题,使用同步技术可以解决这种问题, 把操作数据的代码进行同步, 不要多个线程一起操作。

7c36c068aa614f28bd7486b4ae624ff8.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值