執行緒Thread練習題1買票,使用多執行緒的方式模擬四個視窗賣100張票

Mirliu520發表於2020-10-19
package com.briup.day19;

import work.Person;

/**
 * 5.使用多執行緒的方式來模擬多個視窗買票
要求銷售100張火車票,要求有4個視窗來進行銷售, 請編寫多執行緒程式來模擬這個效果
 * @author MECHREVO
 *
 */
public class WorkSell extends Thread{
	public WorkSell() {
	}
	public WorkSell(String name) {
		super(name);
	}
	static WorkSell s1 = new WorkSell();
	//定義票數為靜態變數,所有物件共用一個
	public static int i=100;
	@Override
	public void run() {
			while(true) {
				//加鎖實現執行緒同步
				synchronized (s1) {
					if(i>0) {
						System.out.println(getName()+":正在售賣第---->"+(i--)+"張票");
						try {
							sleep(100);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}else {
						System.err.println(getName()+"票已經售完!!!");
						break;
					}
				}
			}
	}
	

}

主函式

package com.briup.day19;

public class WorkTest {
	private WorkSell work;
	public static void main(String[] args) {
		WorkSell w1 = new WorkSell("視窗1");
		WorkSell w2 = new WorkSell("視窗2");
		WorkSell w3 = new WorkSell("視窗3");
		WorkSell w4 = new WorkSell("視窗4");
		w2.start();
		w3.start();
		w4.start();
		w1.start();
	}
}

 

相關文章