手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

怎么实现线程同步

时间:2024-10-16 21:21:00

1、即有synchronized关键字修饰的方法(所有访问状态变量的方法都必须进行同步),此时充当锁的对象为调用同步方法的对象。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。

怎么实现线程同步

2、同步代码块即有synchronized关键字修饰的语句块。锁的粒度更细,并且充当锁的对象不一定是this,也可以是其它对象,使用起来更加灵活。同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。

怎么实现线程同步

3、在开始部分我们讲到内置锁也就是互斥锁的介绍时,线程A获得互斥锁后,线程B阻塞知道线旯皱镢涛程A释放互斥锁,线程B才能获取到同一个互斥锁。但是上面代码中Main线程并没有对Status对象进行同遘抟斟喏步,故在Thread线程锁定Status对象的时候不需要阻塞,可以直接操作Status对象,因此,所有使用同步对象的地方都必须进行同步。 修改方式是把注释掉的代码打开。如果锁对象为静态变量,或使用synchronized关键字修饰静态方法,则锁对象为Class对象。

怎么实现线程同步

4、使用特殊域变量(volatile)实现线程同步(1).volatile关键字为域变量的访问提供了一种免锁机制;(2).使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新;(3).因此每次使用该域就要重新计算,而不是使用寄存器中的值;(4).volatile不会提供任何原子操作,它也不能用来修饰final类型的变量;

怎么实现线程同步

5、使用重入锁实现线程同步 在Java1.5中新增了以个java.util.concurrent包来婧旱恐笆支持同步。ReentrantLock类是可重入、互斥、实现了Lo艘早祓胂ck接口的锁,它拥有synchronized相同的并发性和内存语义,此外还多了锁投票,定时锁等候和中断锁等候。 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定;如果使用synchronized,如果A不释放,B将一直等下去,不能被中断; 如果使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的事情。

怎么实现线程同步
© 手抄报圈