简述synchronized和java.util.concurrent.locks.Lock的异同

1.synchronized 用在方法和代码块的区别?

     a. 可以只对需要同步的使用

     b.与wait(),notify()和notifyall()方法使用比较方便

2.wait()

    a。释放持有的对象锁,线程进入等待池,释放cpu,其他正在等待的线程可以获得锁,而sleep方法,线程会休眠一段时间,线程不会释放锁。

3.ReentrantLock 

   还包括了中断锁等待和定时锁等待,

在并发量小的时候,用synchronize是比较好的选择,并发量大的时候用Lock。

synchronize是自动释放锁,Lock是主动释放锁

Lock可以设定所等待的时间,

有些操作不会发生冲突现象,需要用Lock解决,比如同时读文件。

原文地址:https://www.cnblogs.com/suixin84/p/6491512.html