java synchronized和Lock

synchronized 的使用

一:synchronized 和Lock 的区别

  • 1、synchronized是java内置关键字,Lock是ava.util.concurrent.locks包下常用的类
  • 2、synchronized会自动释放锁,(线程执行完同步代码会释放锁,出现异常会自动释放锁)Lock是java.util.concurrent.locks包下常用的类,Lock需在finally中手工释放锁(unlock()方法释放锁)
  • 3、synchronized同步锁,多个线程同时访问时,线程只能阻塞,一直等待占用的线程释放锁,而Lock锁,如果其他线程获取不到锁,可以放弃获取锁
  • 4、synchronized无法判断是否获取到锁,Lock可以尝试获取锁,并判断是否获取到锁
  • 5、synchronized的锁可重入、不可中断、非公平,而Lock锁可重入、可判断、可公平可非公平(两者皆可)
  • 6、Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题。

你可能感兴趣的:(java基础)