1.5 synchronized其他概念

synchronized锁重入:

关键字synchronized拥有锁重入的功能,也就是使用synchronized时,当一个线程得到了一个对象的锁后,再次请求此对象时是可以再次得到对象的锁.

 输出结果:

 method1方法加了synchronized了,在method1()方法中调用加synchronized的method2()方法是完全没有问题的.

===================================================================================================================================

例二:

 

 通过此例反映出:

有父子继承关系的时候,如果都加synchronized修饰了,以下这种调用也是线程安全的

 ================================================================================================================================

碰到异常示例:(就是加锁方法在执行过程中如果出现异常,那么锁就立马释放了,其他在外面等的线程就直接 进来了)

  说明:对于web应用程序,异常释放锁的情况,如果不及时处理,很可能对你的应用程序业务逻辑产生严重的错误,比如你现在执行一个队列任务,很多对象都去在等待第一个对象正确执行完毕再去释放锁,但是第一个对象由于异常的出现,导致业务逻辑没有正常执行完毕,就释放了锁,那么可想而知后续对象执行的都是错误的逻辑.所以这一点一定要引起注意,在编写代码的时候,一定要考虑周全.

例如:

 

会抛出异常:

 

厉害了!!!

  

原文地址:https://www.cnblogs.com/curedfisher/p/11980891.html