买票问题

Posted fly-book

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了买票问题相关的知识,希望对你有一定的参考价值。


/**
 * 买票问题
 */
public class ThreadTrain1 implements Runnable 
    private int count = 10;
    private static Object o = new Object();
    @Override
    public void run() 
        while (count>0)
            try 
                Thread.sleep(10);
             catch (InterruptedException e) 
                e.printStackTrace();
            
            sale();
        
    

    private void sale() 
        // 前提 多线程进行使用、多个线程只能拿到一把锁。
        // 保证只能让一个线程 在执行 缺点效率降低
        synchronized (o)
            if (count>0)
                System.out.println(Thread.currentThread().getName()+",出售第"+(10-count+1)+"张票");
                count--;
            
        
    
    public static void main(String[] args)
        ThreadTrain1 train1 = new ThreadTrain1();
        Thread t1 = new Thread(train1,"1号窗口");
        Thread t2 = new Thread(train1,"2号窗口");
        t1.start();
        t2.start();
    

以上是关于买票问题的主要内容,如果未能解决你的问题,请参考以下文章

线程模拟买票

多线程(模拟买票)-----java基础知识总结

synchronized (lock) 买票demo 线程安全

长治到郑州城际公交在哪买票

简单的多线程买票模拟程序

多线程 - 窗口买票机制