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

 

 例:

      

 

 结果:

 

出现的问题:

 

  修个 b2 类:

在run方法中,使用sleep方法中实现  ,要用类名进行调用。

   结果   

 问题解决:

 

 

 

 

 修个 b2 类:   使用同步代码块方式解决

注:任意对象 Object 对象应共同使用1个。

  结果    

 

 修个 b2 类:   使用同步方法  方式解决

 问题:如果同步代码块 和同步方式同时使用。 代码块使用 新创建的对象object 。两个方式 同步就会出问题 因为不是一个对象锁。

解决办法:同步代码块 () 内对象可以使用 this 类的对象,而同步方法也是这个对象,就可以解决 不是同一把锁的问题。

例:下例,是同步代码块 使用的事 object 对象,同步方法 是本类对象。结果就是 ,同步失败。

结果  

 

 例:下例,是同步代码块 this 对象,同步方法 是本类对象。成功

     结果  

 

 

 

 

 

 

 j

posted @ 2020-05-23 13:52  mengjiabei  阅读(208)  评论(0)    收藏  举报