用多线程模拟电影售票过程(Java实训)-JavierWu

发布于 2019-11-27  10 次阅读


用多线程模拟电影售票过程(Java实训)

实训目的:

多线程的实现、线程同步

实训要求:

总票数和售票窗口数由键盘输入,用每个线程处理一个窗口的售票。

在这里插入图片描述

Test.java

package program5

import java.util.Scanner

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in)
		int ticks,windows
		System.out.println("请输入总票数:")
		ticks=sc.nextInt()
		System.out.println("请输入售票窗口数:")
		windows=sc.nextInt()
		tickets lockThread=new tickets()
		lockThread.setTickets(ticks)
		for(int i=1i<=windowsi++)
			new Thread(lockThread,"窗口"+i).start()
	}

}

tickes.java

package program5
import java.util.concurrent.locks.*
public class tickets implements Runnable {
	private int tickets
	
	public int getTickets() {
		return tickets
	}

	public void setTickets(int tickets) {
		this.tickets = tickets
	}
	private final Lock lock=new ReentrantLock()
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true) {
			lock.lock()
			if(tickets>0) {
				try {
					Thread.sleep(100)
					System.out.println(Thread.currentThread().getName()
							+"正在发售第"+tickets--+"张票")
				}catch(InterruptedException e) {
					e.printStackTrace()
				}finally {
					lock.unlock()
				}
			}
			else {
				System.exit(0)
			}
		}
	}

}

结果显示:

在这里插入图片描述

届ける言葉を今は育ててる
最后更新于 2019-11-27