多线程同步-买票系统

Posted

tags:

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

 

 窗口售票 简单同步

 

 

package IO;

public class DemoTicket implements Runnable {
    
    private int tickets = 100;
    
    public static void main(String[] args) {
        DemoTicket mt = new DemoTicket();

      Thread t1=new Thread(mt);  //创建线程 t1和t2
      Thread t2=new Thread(mt);
      t1.setName("窗口1");       //线程命名
      t2.setName("窗口2");
      t1.start();
      t2.start();

    }
    
    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(true) {
            synchronized(this) {
                if(tickets <= 0) {
                    break;
                }
                try {
                    Thread.sleep(10);                //线程1睡,线程2睡
                } catch (InterruptedException e) {
                    
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "...这是第" + tickets-- + "号票");
            }
    
        }
    }
    
}

 

以上是关于多线程同步-买票系统的主要内容,如果未能解决你的问题,请参考以下文章

多线程之同步代码块与同步函数

Java多线程同步锁的理解

多线程 Thread 线程同步 synchronized

synchronized (lock) 买票demo 线程安全

Java 多线程—— 线程的同步

线程同步——火车票问题