多线程案例;卖票、解决数据安全问题(同步代码块、同步方法)

例:

结果:

出现的问题:
、
修个 b2 类:
在run方法中,使用sleep方法中实现 ,要用类名进行调用。
结果

问题解决:


修个 b2 类: 使用同步代码块方式解决
注:任意对象 Object 对象应共同使用1个。
结果

修个 b2 类: 使用同步方法 方式解决
问题:如果同步代码块 和同步方式同时使用。 代码块使用 新创建的对象object 。两个方式 同步就会出问题 因为不是一个对象锁。
解决办法:同步代码块 () 内对象可以使用 this 类的对象,而同步方法也是这个对象,就可以解决 不是同一把锁的问题。
例:下例,是同步代码块 使用的事 object 对象,同步方法 是本类对象。结果就是 ,同步失败。
结果 
例:下例,是同步代码块 this 对象,同步方法 是本类对象。成功
结果 
j

浙公网安备 33010602011771号