利用多线程模拟抢票系统
/*
-
多线程
*利用多线程实现抢票操作
*有两个类。
*1、先写一个Ticket类继承Thread类。并重写run()方法
*2、写一个抢票的运行类:TicketText
*/
public class TicketText {
public static void main(String[] args) {
Ticket ticket=new Ticket();//1、实例化抢票的对象
2、创建三个线程抢票
Thread t1=new Thread(ticket,“线程1”);
Thread t2=new Thread(ticket,“线程2”);
Thread t3=new Thread(ticket,“线程3”);
t1.start();
t2.start();
t3.start();}
}
public class Ticket extends Thread {
private int ticket = 20; //1、定义票数的变量并赋值,总共20张票
private int num=0;//1、1定义抢票次数 ,从0开始。
public void run() {
while(true) { //2、循环实现抢票
synchronized(this) { //3、同步锁代码块
if(this.ticket!=0) { //4、判断票数,还有多少,大于0则循环
try {
Thread.sleep(100); //5、休息100毫秒
} catch (Exception e) {
// TODO: handle exception
}
ticket–;//6、票数,循环每次减1
num++;//6、1 抢票次数,循环每次加1。
System.out.println(Thread.currentThread().getName()+“第”+num+“次抢票成功,”+“剩余票数”+(this.ticket)+“张”); //7、输出
}else {
break;//8、无票则退出循环
}
}
}
}
}