暂时略读,日后详细解释
1:synchronized锁重入
关键字synchronized拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象锁之后,再次请求此对象锁时是可以直接得到该对象的锁的。
“锁重入”的概念是:自己可以再次获取自己的内部锁,如果不可重入的话,就会造成死锁。
当存在父子类的继承的时候,子类完全可以通过“可重入锁”调用父类的同步方法。
2:出现异常,锁自动释放
3:同步不具备继承性
4:同步代码块
当两个并发线程访问同一对象object中的synchronized(this)同步代码块时,一段时间内只能有一个线程被执行,另一个线程必须等待当前线程执行完这个代码块。
同步代码块执行效率高于同步方法的原理在于:一半异步,一半同步,即不在synchronized块中的异步执行,在synchronized块中的同步执行。
5.死锁
java线程死锁时一个经典的多线程问题,因为不同的线程都在等待不可能被释放的锁,从而导致所有的任务都无法继完成,造成“假死”。
比如:互相持有锁。但是只要互相等待对方释放锁,就有可能出现死锁。