多线程经典问题之多窗口卖票

需求:简单的卖票程序,要实现多个窗口同时买票。
一、方式一:

1、问题:为什么50张票被卖出了150次?

2、出现的原因: 因为num是非静态的,非静态的成员变量数据是在每个对象中都会维护一份数据的,三个线程对象就会有三份。

3、解决方案:把num票数共享出来给三个线程对象使用。使用static修饰。

二、方式二:

注意:静态成员变量必须要定义在成员方法外,而不能定义在成员方法里。
1、问题: 出现了线程安全问题 。

出现线程安全问题的根本原因:
1)存在两个或者两个以上 的线程对象,而且线程之间共享着一个资源。
2)有多个语句操作了共享资源。(如果只有单个语句操作共享资源,则不会出现线程安全问题)

2、线程安全问题的解决方案:sun提供了线程同步机制让我们解决这类问题的。

线程同步机制详解见下一篇。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值