Synchronized和Lock区别 1.Synchronized 内置的java关键字,lock是一个java类 2.Synchronized 无法判断获取锁的状态,Lock可以判断是否获取到了锁 3.Synchronized 会自动释放锁,lock必须要手动释放锁,如果不是放就会发生死锁问题 4.Synchronized 线程1(获得锁,阻塞),线程2(等待,傻傻的等);Lock锁就不一定等待下去 lock.tryLock() 5.Synchronized 可重入锁,不可中断,非公平的;lock,可重入锁,可以判断锁,非公平(可以自己设置,默认是非公平的) 6.Synchronized 适合所少量的代码同步问题,Lock适合所大量的同步代码
但是我在写一个生产者和消费者问题的时候发现了一个问题,和上面的Lock锁手动释放,否则将会出现死锁问题相违背 ,代码如下。那位大佬可以帮忙解释一下呢,谢谢了!
public class SaleTicketDemo01 { public static void main(String[] args) { //创建一张票 Ticket ticket = new Ticket(); new Thread(()->{ for(int i = 0;i<60;i++) { ticket.sale(); } },"A").start(); new Thread(()->{