Synchronized 相关知识

  Synchronized和Lock是Java中锁的两个基本工具。

Synchronized用在方法和代码块上的区别:

    用在方法签名上,当某个线程调用此方法时,会获取该实例的对象,方法结束前,其他线程只能去等待,当这个方法执行完成后,其他线程才有机会去抢占这把锁,执行方法。但是发生这一切的基础是所有线程使用同一个对象实例,才能实现互斥的现象。否则Synchronized关键字将失去意义。

(如果该方法为类方法,即其修饰符为static时,某个线程调用此方法时会拥有该类的锁,只要该线程在当前方法内运行,其他线程依然无法获得方法的使用权。)

用在代码块上,当线程运行到该代码块内,就会拥有对象的锁,如果多线程共享一个对象,就会形成互斥。使用代码块,可以只对需要同步的代码进行同步,这样大大的提高了效率。

总结:代码块的优势:

  1. 可以只对需要同步的地方使用。

  2. 与 wait() notify() notifyAll()一起使用,比较方便

评论区

maonima

2017-05-02 15:05

效率太低了,能不用则不用。

热门分享

扫码入社