方法一:
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方法中