线程同步——使用(synchronized)关键字

1.需要线程同步的原因:
Java 中允许多线程并行访问,同一时间段内多个线程同时完成各自的操作。但是多个线程同时操作同一个共享数据时,可能会导致数据不准确的问题。

2.线程同步的方法:
可以通过 synchronized 关键字修饰方法实现线程同步,每个Java 对象都有一个内置锁,内置锁会保护使用 synchronized 关键字修饰的方法,要调用该方法就必须先获得锁,否则就处于阻塞状态。

3。synchronized 关键字可以修饰实例方法,也可以修饰静态方法,两者在使用的时候是有区别的。
(1)给实例方法(非静态方法)添加 synchronized 关键字并不能实现线程同步。
(2)线程同步的本质是锁定多个线程所共享的资源,synchronized 还可以修饰代码块,会为代码块加上内置锁,从而实现同步。

4.如何判断线程是否同步?
(1)关键点
锁定的资源在内存中是一份还是多份?一份大家需要排队则线程同步,多份则线程不同步。(无论是锁定方法还是锁定对象,锁定类,只需要分析这个方法、对象、类在内存中有几份即可)。
(2)常见的
对象一般都是多份,类一定是一份。
方法看是静态方法还是非静态方法,静态方法一定是一份,非静态方法一般是多份。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值