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

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

一、问题:为何50张票被卖出了150次? 
安全

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

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

2、方式二: 

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

出现线程安全问题的根本缘由: 
1)存在两个或者两个以上 的线程对象,并且线程之间共享着一个资源。 
2)有多个语句操做了共享资源。(若是只有单个语句操做共享资源,则不会出现线程安全问题)同步

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

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

相关文章
相关标签/搜索