客観的トレーニング:マルチスレッド、スレッドの同期を達成するために
トレーニング要件:総投票数とキーボード入力のチケット窓の数、各スレッドでチケット処理ウィンドウ
コード:
package exam3;
import java.util.Scanner;
class TicketWindow implements Runnable//接口
{
private int tickets;
void get(int a)
{
this.tickets= a;
}
public void run()
{
while(true)
{
synchronized("") {//加一个锁,防止死循环
if(tickets>0)
{
System.out.println(Thread.currentThread().getName()
+"正在发售第"+tickets--+"张票");//chu_yu_xuan
try {Thread.sleep(100);}catch(InterruptedException e) {e.printStackTrace();;}//延时100ms
}
else break;
}
}
}
}
public class Sale
{
public static void main(String[] args)
{
int tickets,i ;
System.out.println("请输入票数:");
@SuppressWarnings("resource")
Scanner s =new Scanner(System.in);
tickets= s.nextInt();
System.out.println("请输入窗口数:");
i= s.nextInt();
TicketWindow tw = new TicketWindow();
tw.get(tickets);
for(int j=0;j<i;j++)
{
new Thread(tw,"窗口"+(j+1)).start();
}
}
}