模拟12306多个窗口卖票(使用实现Runnable接口方法)

版权声明:本博文仅供学习、参考、技术讨论,版权归笔者/译者所有。 https://blog.csdn.net/qq_38025219/article/details/84313085

描述:

实现Runnable方式好处:避免了单继承的局限性。
在定义线程时,建立使用实现方式。

两种方式区别:

继承Thread:线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。

实例:

package root;

/**
 *   2018/11/21.
 */
public class saleRunnable {

    public static  void main(String [] args){
        Ticket ticket=new Ticket();
        Thread A1=new Thread(ticket,"第一个窗口");
        Thread A2=new Thread(ticket,"第二个窗口");
        Thread A3=new Thread(ticket,"第三个窗口");
        A1.start();
        A2.start();
        A3.start();

    }
}


class Ticket implements Runnable{

    private int  Numbers=10;

    private int getNumbers(){
        return Numbers;
    }


    public void SellTicket(){
        this.Numbers--;

    }


    @Override
   public  void run(){

       while(getNumbers()>0) {
           synchronized (this) {
               if (getNumbers() > 0) {
                   SellTicket();
                   System.out.println(Thread.currentThread().getName() + "卖了一张票:剩余票数" + getNumbers());
                try{
                    Thread.sleep(500);
                }
                catch(Exception e){
                    e.printStackTrace();
                }

               }
           }
       }

        }


    }

运行结果:

每一次运行结果都是有差异的,截取一次测试结果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38025219/article/details/84313085
今日推荐