java多线程:线程的同步-同步块

本文深入探讨了在Java中使用同步代码块的方法及其优势,解释了如何避免在同步程序中使用sleep和yield方法,以提升并发访问的性能。通过实践案例,展示了同步代码块如何在访问竞争资源时实现高效、有序的线程执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

除了同步,同步方法外,还可以使用同步代码块,有时候,同步代码块会带来比同步方法更好的效果。

追其同步的根本目的,是控制竞争资源的正确访问,因此只要再访问竞争资源的时候,保证同一时刻只能有一个线程访问即可,因此java引入了同步代码块的测量,以提高性能。

synchronized(this){

   需要同步的操作

}

在使用synchronized关键字时,应该尽可能避免在synchronized方法或synchronized块中使用sleep或者yield方法,因为在synchronized程序中占有对象锁,你休息那么其他 的线程只能以便等着你醒来完了才能执行,不但严重影响效率,也不符合逻辑。

同样在同步的程序块内,调用yeild方法让出cpu资源也没有意义,你占用着锁,其他互斥的线程还是无法访问同步程序块,当然和同步程序块的线程可以获得跟多的执行时间。

转载自 http://lavasoft.blog.51cto.com/62575/221922

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值