主要通过多线程来完成抢票系统
package org.jsoft.thread;
public class buy {
public static void main(String[] args) {
Mp mp=new Mp();//创建Mp类的对象
Thread t1 = new Thread(mp, "黄牛1");
Thread t2 = new Thread(mp, "黄牛2");
Thread t3 = new Thread(mp, "黄牛3");//实例化 三个黄牛
t1.start();
t2.start();
t3.start();//调用t1-t3
}
}
class Mp implements Runnable {//创建Mp类,实现了Runnable接口
private int num = 0; // 定义出票数 (私有化的 封装的)
private int num1 = 50; // 定义剩余票数
boolean flag = false;//声明了一个bool型的变量
@Override
public void run() {//run方法
while (true) {
synchronized (this) {//同步线程
if (num1 <= 0) {
break;//票没了,跳出循环
}
num++;//出票数依次增加
num1--;//剩余票数依次减少
try {
Thread.sleep(500);// 网络延时0.5s
} catch (InterruptedException e) {
e.printStackTrace();
}//捕获异常,有错执行catch
System.out.println("抢票结果:"+Thread.currentThread().getName()+"抢到第"+num+"张票,剩余"+num1+"张票");
}
}
}
}