java 多線程同步鎖的使用 三個售票窗口同時出售20張票


package Thread;
/**
* 
* 三個售票窗口同時出售20張票
*程序分析:1.票數要使用同一個靜態值
 *2.為保證不會出現賣出同一個票數,要java多線程同步鎖。
*設計思路:1.創建一個站台類Station,繼承Thread,重寫run方法,
*在run方法里面執行售票操作!售票要使用同步鎖:即有一個站台賣這張票時,其他站台要等這張票賣完!
*3.創建主方法調用類
*/
public class Station1 extends Thread{
//通過構造方法給線程名字賦值
public Station1(String name){
super(name);//給線程名字賦值
}
//為了保持票數的一致,票數要靜態
static int tick = 20;
//創建一個靜態鑰匙
static Object ob = "aa";//值是任意的
//重寫run方法 實現買票操作
public void run(){
while(tick>0){
synchronized(ob){
/**
* 這個很重要, 必須使用一個鎖
* 進去的人會把鑰匙拿在手上 出來才把鑰匙拿出來
*/
if(tick>0){
System.out.println(getName()+"賣了第"+tick+"張票");
tick--;
}else{
System.out.println("票賣完了");
}
}
try {
sleep(1000);//休息一秒
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

 

package Thread;

public class MainClass1 {
/**
* java 多線程同步鎖的使用
* 示例 三個售票窗口同時出售10張票
*/
public static void main(String[] args) {
//實例化站台對象 並為每一個站台取名字
Station1 station1 = new Station1("窗口1");
Station1 station2 = new Station1("窗口2");
Station1 station3 = new Station1("窗口3");
//讓每一個站台對象各自開始工作
station1.start();
station2.start();
station3.start();
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM