Synchronized有什么作用,是如何实现的呢?

yu6810 5月前 ⋅ 151 阅读

1Synchronized是一种对象锁,保证同一时间只有一个线程执行被修饰的方法和代码块。 2同步方法和同步代码块用于实现线程间的同步,确保多线程环境下的代码安全执行. 同步方法:当一个方法被ACC_Synchronized所标记时,线程调用该方法必须先获得锁才能执行方法中代码。 同步代码块:使用 monitorenter 和 monitorexit来进行加锁和释放锁。当线程执行到monitorenter时,争夺锁才能执行代码块中的代码。执行到minitorexit的时候,释放锁,等待其他线程争夺。 3. Synchronized底层是基于monitor的,monitor有3部分组成The owner、wait Set、Entry Set,线程首先会进入 EntryList 集合,获取到对象的锁后,进入 Owner区域并把owner变量设置为当前线程,计数器count加1;若线程调用 wait() 方法,将释放当前持有的锁,,同时该线程进入 WaitSet集合中等待被唤醒;若当前线程执行完毕,释放锁,并复位count的值,以便其他线程进入获取锁;


全部评论: 0

    我有话说: