java 多线程 继承Thread和实现Runnable的区别
1)继承Thread:
public class ThreadTest extends Thread 
{   
    private int count;   
    private String name;
    
    public ThreadTest(int count,String name){
    	this.count = count;
    	this.name = name;
    }
    
    public void run()   
    {   
        while(count>0)   
        {   
            System.out.println(name+"买票  "+count--);   
        }   
    }
    
    public static void main(String []args)   
    {   
        ThreadTest t1 = new ThreadTest(10,"1号窗口");   
        ThreadTest t2 = new ThreadTest(10,"2号窗口"); 
        t1.start(); 
        t2.start();   
    }   
}
运行结果:
1号窗口买票 10
1号窗口买票  9
1号窗口买票  8
2号窗口买票  10
1号窗口买票  7
2号窗口买票  9
1号窗口买票  6
2号窗口买票  8
1号窗口买票  5
2号窗口买票  7
1号窗口买票  4
2号窗口买票  6
1号窗口买票  3
2号窗口买票  5
1号窗口买票  2
2号窗口买票  4
1号窗口买票  1
2号窗口买票  3
2号窗口买票  2
2号窗口买票  1
2)实现Runnable接口
public class hello implements Runnable{
 private int ticket=19;
	
	@Override
	public void run() {
		for(int i=0;i<20;i++){
			if(this.ticket >0){
				System.out.println(Thread.currentThread().getName()+"正在买票"+this.ticket--);
			}
		}
	}
	
	public static void main(String[] args){
		hello h1 = new hello();
		new Thread(h1,"3号窗口").start();
		new Thread(h1,"1号窗口").start();
		new Thread(h1,"2号窗口").start();
		
	}
}
运行结果:
1号窗口正在买票19
2号窗口正在买票18
3号窗口正在买票19
2号窗口正在买票16
1号窗口正在买票17
2号窗口正在买票14
3号窗口正在买票15
2号窗口正在买票12
1号窗口正在买票13
2号窗口正在买票10
3号窗口正在买票11
2号窗口正在买票8
1号窗口正在买票9
2号窗口正在买票6
3号窗口正在买票7
2号窗口正在买票4
1号窗口正在买票5
2号窗口正在买票2
3号窗口正在买票3
1号窗口正在买票1
从上面的运行结果可以看出:继承Thread实现的模式是 定义多个线程,各自完成各自的任务. 实现Runnable实现的模式是 定义多个线程,实现一个任务.
其实在实现一个任务用多个线程来做也可以用继承Thread类来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。
大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。
                    
                
                
            
        
浙公网安备 33010602011771号