多个线程多个锁

走远了吗. 提交于 2019-12-06 10:31:11

多个线程多个锁:多个线程,每个线程都可以拿到自己指定的锁,分别获得锁之后,执行synchronized方法体的内容

(1).不加static关键字执行结果

运行结果:

(2).加上static关键字执行的结果

 

 

 

加static的意思是:在静态方法上 加上synchronized修饰的话,(以后获得的锁)以后这个线程调用printNum()方法时, 类级别的锁.无论以后自己实例化出多少个对象,都是没有任何关联关系的

 

 

 

 加sttaic修饰了表示类级别的锁,无论有多少个对象,都可以保证同步.


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

总结:

  关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁,所以示例代码中哪个线程先执行synchronized关键字的方法,哪个线程就持有该方法所属对象的锁(Lock),两个对象,线程获得的就是两个不同的锁,他们互不影响.

  有一种情况则是相同的锁,即在静态方法上加上synchronized关键字,表示锁定.class类,类级别的锁(独占.class类).无论有多少个对象,都可以保证同步.

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!