对于此问题,你不能单纯的去记住各个锁是什么含义,你要明白到底为什么会有这样的锁,
只有这样你才能真正的去理解并应用它!
1、“锁”出现的原因
当多线程出现时,就出现了当多个线程同时访问同一个数据时就会出现数据安全问题,
为了保证程序的正确运行,这就就引出了“锁”的机制;
2、对于“锁”的理解
其实“锁”就是程序使用的一种安全机制,当对某一数据上了锁后,如果一个线程或的了该锁,
别的线程就无法访问此数据,这就保证了数据的安全;
3、锁的细分
其实无论什么锁都一样,只是具体的习惯使用的场合不一样才导致了你感觉它们有区别!
首先在同步代码块时我们经常提到“object”锁,其实它就是任意一个对象而已--只要随便的
一个对象就可以完成同步代码块的建立。
其次如果在一个类中我们常用的锁是“this”,之所以这样用就是直接用本类的对象比较方便而已,
其实你这时随便定义一个对象用“Object”锁还一样。
最后,“class”锁是用在静态同步函数中的,此时不是不用对象只是没有对象可用而已,因为静态代码
随着类的加载而加载,此时只有“class”可用而已。
其实,如果想用,不管什么地方,“class”锁保证都可以用! |