我么知道Java传统多线程的实现有两种方法,继承Thread类或者实现Runnable即可.线程启动时调用start()方法.
实现Runnable接口相比继承Thread类有如下好处:
1.避免单继承的局限,一个类可以同时实现多个接口
2.适合资源的共享.
实现多线程模拟售票点卖票来说明实现Runnable即可可以达到资源共享的目的.
使用继承Thread类的多线程售票实现
packageorg.dennist.thread.demo;/***
* TicketThread.java
*
*@version: 1.1
*
*@author: 苏若年 发送邮件
*
*@since: 1.0 创建时间: 2013-2-24 下午02:22:49
*
* TODO : class TicketThread.java is used for ...
**/
public class TicketThreadT extendsThread{private int num = 5; //总共票数设定为5张
@Overridepublic voidrun() {for(int i=0; i<10; i++){if(this.num>0){ //打印买票信息
System.out.println(Thread.currentThread().getName() + "买票: " + this.num--);
}
}
}public static voidmain(String[] args) {
TicketThreadT th1= new TicketThreadT(); //线程一
th1.setName("售票口一");
TicketThreadT th2= new TicketThreadT(); //线程二
th2.setName("售票口二");
TicketThreadT th3= new TicketThreadT(); //线程三
th3.setName("售票口三");//分别启动三个线程
th1.start();
th2.start();
th3.start();
}
}
程序运行结果:
总共5张票,启动了三个线程,从打印结果可以看出,一共卖出去了15张票,线程之间没有进行资源共享
实现Runnable的售票线程
packageorg.dennist.thread.demo;/***
* TicketThreadR.java
*
*@version: 1.1
*
*@author: 苏若年 发送邮件
*
*@since: 1.0 创建时间