Lock和synchronized的对比

 

1.1.synchronized 只能实现单线程的读写,一旦多个线程要同时访问一个资源,就只有一个线程可以开启访问,其余线程只能等待,非常影响性能。所以如果使用的话,一定要尽量减小锁的粒度,到代码快级。

1.2.synchronized 不需要手动释放锁,发生异常的时候会自动释放;但是Lock必须要自己手动释放,如果没有手动释放的话,会导致死锁,所以使用的时候必须有try finally

1.3.可以提高多线程的读写效率,读读共享,写写互斥,读写互斥。

1.4.Lock 在锁住的时候可以中断锁,但是如果是 synchronized的话 就必须要一直等待。

1.5.Lock可以释放特定的锁,synchronized 不能。

1.6.Lock是一个接口、synchronized 是内置的语言实现,而且lock的源代码进行锁定的时候用的也是synchronized 关键字。

1.7.Lock可以知道有没有成功获取到锁,synchronized 无法办到。

如果资源竞争不激烈,那么两者性能差不多,如果竞争非常激烈的话,Lock性能要好很多。

 

你可能感兴趣的:(Java面试,Java面试)