java学习笔记之线程5

来源:互联网 发布:淘宝押金1000怎么上交 编辑:程序博客网 时间:2024/06/11 06:33

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

先上一段代码:
这里写图片描述

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

多次执行结果如下:
这里写图片描述


这里写图片描述


这里写图片描述


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

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

这里写图片描述

这里写图片描述


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

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

原创粉丝点击