package com.day20; public class Test { public static void main(String[] args) { Demo01 site = new Demo01(); Thread person1= new Thread(site,"桃跑跑"); Thread person2= new Thread(site,"抢票代理"); Thread person3= new Thread(site,"黄牛党"); person1.start(); person2.start(); person3.start(); } }
package com.day20; public class Demo01 implements Runnable { private int count = 10; // 记录剩余票数 private int num = 0; // 记录买到第几张票 private boolean flag = false; //记录是否售完 public void run() { while (true) { if(!sale()){ break; } } } // 同步方法:卖票 public synchronized boolean sale() { if (count <= 0) { return false; } // 第一步:修改数据 num++; count--; try { Thread.sleep(500); // 模拟网络延时 } catch (InterruptedException e) { e.printStackTrace(); } // 第二步:显示信息 System.out.println(Thread.currentThread().getName() + "抢到第" + num + "张票,剩余" + count + "张票!"); if(Thread.currentThread().getName().equals("黄牛党")){ return false; } return true; } }