多线程

lwjppz 2019-04-19 01:32:45
怎么写的代码,实现统计各卖了几张票,求助
...全文
60 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2019-04-19
  • 打赏
  • 举报
回复
引用 楼主 傻乎乎的十三 的回复:
怎么写的代码,实现统计各卖了几张票,求助

import java.util.Scanner;

class Ticket implements Runnable {
	private int sum,ticket=1;
	private int[] acount;
	
	public Ticket(int sum,int n) {
		super();
		this.sum = sum;
		acount=new int[n];
		for(int i=0;i<n;i++) {
			acount[i]=0;
		}
	}


	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(sum>0) {
			this.sale();
		}
		System.out.println("票已售完,售票窗口"+Thread.currentThread().getName()+"共售票"+acount[Integer.parseInt(Thread.currentThread().getName())-1]+"张。");
	}
	public synchronized void sale() {
		if(sum>0) {
			System.out.println("售票窗口"+Thread.currentThread().getName()+"正在售票,当前余票是:"+sum+",售出的票号是:"+ticket);
			sum--;ticket++;acount[Integer.parseInt(Thread.currentThread().getName())-1]++;
		}	
	}

}
public class test11{
	public static void main(String[] arg0) {
		Scanner sc= new Scanner(System.in);
		System.out.println("请输入总票数和售卖窗口数用空格分开:");
		String str=sc.nextLine();
		String[] s=str.split(" ");
		Ticket  tk=new Ticket(Integer.parseInt(s[0]),Integer.parseInt(s[1]));
		for(int i=1;i<=Integer.parseInt(s[1]);i++) {
			new Thread(tk, String.valueOf(i)).start();
		}
	}
}

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧