多线程实现买票功能

方法一:

 

public class SellTicket extends Thread {
 private static int tickets=1000;
 public void run(){
  while(tickets>0){
   System.out.println(currentThread().getName()+"sell:"+tickets);
   tickets--;
  }
 }
}

SellTicket sellTicket1=new SellTicket();
  SellTicket sellTicket2=new SellTicket();
  SellTicket sellTicket3=new SellTicket();
  sellTicket1.start();
  sellTicket2.start();
  sellTicket3.start();

 

方法二:

 

public class SellTicketRun implements Runnable {
 private int tickets=1000;
 Object obj=new Object();
 @Override
 public void run() {
  while(tickets>0){

    //同步代码块
   synchronized (obj) {
    if(tickets>0){
     try {
      Thread.sleep(10);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     System.out.println(Thread.currentThread().getName()+"sell:"+tickets);
     tickets--;
    }
   }
   
  }
  
 }

}

 

 

SellTicketRun sellTicketRun=new SellTicketRun();
  Thread th1=new Thread(sellTicketRun);
  Thread th2=new Thread(sellTicketRun);
  Thread th3=new Thread(sellTicketRun);
  th1.start();
  th2.start();
  th3.start();

 

多线程继承Thread和实现runnable方式的区别:避免单继承的局限性,

继承Thread:线程代码存放Thread子类run方法中,

实现runnable:线程方法存放在接口的子类的run方法中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值