java学习笔记之线程5

时间:2023-02-24 11:18:48

今天给大家说说线程中的类锁

先上一段代码:
java学习笔记之线程5

上面程序的大概意思是:
在MyClass中有一个成员方法m1,当执行线程为t1时,让它去存10元钱,当执行线程是t2时,让它去取十元钱,假设m是一个银行账户,t1,t2共享这个账户

多次执行结果如下:
java学习笔记之线程5


java学习笔记之线程5


java学习笔记之线程5


如图:在这个程序中涉及到了并发时的数据安全问题,尽管偶尔出现正常的情况,但这种结果不是我们想要的!
上面的情况就和生活情境矛盾了,卡里的钱怎么还会是负呢!!!
我们生活中真实的情况是:卡里有钱才能取出钱来
先给大家说说这个类锁:和对象锁有什么区别呢??没区别!类加载器在加载class文件的时候会创建一个class对象,class对象这个锁就是类锁,有一点不同的就是这个类对象只有一个,而其他对象有多个,当然除开什么单例模式

这时候我们上类锁再看看结果:

java学习笔记之线程5

java学习笔记之线程5


大家看到,类锁的语法其实和对象锁差不多,只不过我们锁的是类对象
看看执行结果是怎样的呢:

以上结果是多次执行的结果,是不是这个结果才符合常理呢!