synchornized 和lock的区别
1.synchronized是java自带的关键字,lock是接口
2.synchronized自动上锁解锁,lock是手动上锁解锁。
3.synchronized发生异常就会解锁不会死锁,lock忘记解锁就会死锁
4.lock的可以知道是否获得了锁,提高了多线程读的效率
5.Lock可以让等待锁的线程中断不会一直等待下去。而synchronized会一直等待
如果锁具备可重入性,则称作为可重入锁。像synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。
Reentratlook可重入锁
比如
synchronized void method1(){
method2();
}
synchronized void method2(){
}
这里m1中在未释放锁的情况下也能拿到m2的
说说volitile与synchronized的区别
1.首先volitile修饰的是变量,而synchronized修饰的代码块,方法,变量,类范围广
2.volitile只能保证线程的可见性,有序性。synchronized能保证原子性,可见性,有序性。
3.volitile不会造成线程堵塞,synchronized会