java synchronized与Lock

mac2024-01-28  32

synchronizedLockJava的关键字,jvm提供java接口获取锁假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待分情况而定,Lock有多个锁获取的方式,可以尝试获得锁,线程可以中断等待释放锁1、已获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁在finally中必须手动释放锁,不然容易造成线程死锁锁状态无法判断可以判断灵活控制可绑定多个条件锁类型可重入 不可中断 非公平可重入 可中断 可公平性能少量同步大量同步

Lock相对于synchronize优势

灵活控制: Lock可针对同锁不同任务绑定多个条件,更简单高效地协调控制多组线程。提高效率:Lock(ReentrantReadWriteLock)可以提高多个线程进行读操作的效率。锁状态:Lock的tryLock()可以知道有没有成功获取锁可中断: 如果获取锁的线程由于要等待IO或者其他原因(比如调用sleep方法),获取锁的线程被阻塞了,但是又没有释放锁,其他线程便只能干巴巴地等待,这非常影响程序的执行效率。因此就需要有一种机制可以不让等待的线程一直无期限地等待下去(比如只等待一定的时间或者能够响应中断)。
最新回复(0)