同步器的主要使用方式是继承,子类通过继承同步器并实现它的抽象方法来管理同步状态,在抽象方法的实现过程中免不了要对同步状态来进行修改,也就是int成员变量,这时就需要使用同步器提供的3个方法来进行性操作,这三个方法包括:getState()、setState()、compareAndSetState(),因为它们能够保证状态的改变是安全地。
示例一:三个售票窗口同时出售20张票;
程序分析:1.票数要使用同一个静态值
2.为保证不会出现卖出同一个票数,要java多线程同步锁。
设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完!
2.创建主方法调用类
(一)创建一个站台类,继承Thread
(二)创建主方法调用类
程序运行结果如下: