- 适合多个相同程序代码的线程去处理同一个资源
- 可以避免由于Java的单继承性带来的局限性
- 增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
线程对象在实例化的时候只能实例化一个对象
/**定义一个线程
*/
class MyThread implements Runable{
private int ticket=5;//票的数量为5
public void run(){//覆写run方法
for(int i=0;i<100;i++){//定义一个超过票数的循环
if(ticket>0){
System.out.println("卖票了,ticket="+ticket);//还有显示有票的数量
}
}
}
}
/**验证上面线程中ticket被共享
*/
class MyThreadTest{
public static void main(String []args){
MyThread a=new MyThread();//实例化线程对象
//启动两个线程对象去,发现票数据被共享
new Thread(a).start();//启动第一个线程对象
new Thread(a).start();//启动第二个线程对象
/*如果实例化两个对象,比如实例化a再实例化一个b你会发现没有,两个不同的线程没有共享ticket
但是如果MyThread是继承Thread类而不是实现接口Runnable,上面的代码将报错。*/
}
}