多线程初级模拟12306抢票

    科技2025-08-26  15

    package com.lzy.thread; /** * 共享资源,并发(线程安全) * @author Administration * */ public class eWeb12306 implements Runnable{ //票数 private int ticketNums=99; @Override public void run() { while(true) { if(ticketNums<0) { break; } try { Thread.sleep(200);//模拟延迟 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--); } } public static void main(String[] args) { //一份资源 eWeb12306 web=new eWeb12306(); System.out.println(Thread.currentThread().getName()); //多个代理 new Thread(web,"栗").start(); new Thread(web,"李").start(); new Thread(web,"力").start(); } }

    Thread.currentThread().getName()表示:返回对当前正在执行的线程对象的引用。 通俗讲就是记录那张票由谁抢到 Thread.sleep(200)表示:使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性(在这里用来模拟网络的延迟,运行后票数会有-1,-2的出现)

    Processed: 0.013, SQL: 8