java实现多线程的两种方法的比较

java实现多线程有两种方法
1、继承Thread类
2、实现Runnable接口
这两种方法的 共同点
不论用哪种方法,都必须用Thread(如果是Thead子类就用它本身)产生线程,然后再调用start()方法
两种方法的 不同点
1、继承Thread类有一个缺点就是单继承,而实现Runnable接口则弥补了它的缺点,可以实现多继承
2、继承Thread类必须如果产生Runnable实例对象,就必须产生多个Runnable实例对象,然后再用Thread产生多个线程;而实现Runnable接口,只需要建立一个实现这个类的实例,然后用这一个实例对象产生多个线程。即实现了资源的共享性

基于以上两点所以建议用第二种方法
package com.dr.runnable1;
//一个类只要继承了Thread类,则此类就是多线程类
class MyThread extends Thread
{
    private String name;
    public MyThread(String name)
    {
        this.name=name;
    }
    //如果要使用多线程,则必须有一个方法的主体
    public void run()
    {
        //打印输出
        for(int i=0;i<10;i++)
        {
            System.out.println(this.name+"----->运行");
        }
    }
}
public class Demo1 {
    public static void main(String args[])
    {
         //第一种方法
         Runnable r1=new MyThread("线程A");
         Runnable r2=new MyThread("线程B");
         Runnable r3=new MyThread("线程C");
         Thread t1=new Thread(r1);
         Thread t2=new Thread(r2);
         Thread t3=new Thread(r3);
         t1.start();
         t2.start();
         t3.start();
    } 
} 
这是继承了Thread类,第一种方法产生多个Runnable实例对象,然后用Thread产生多个线程
第二种方法,因为这个类已经继承了Thread类,所以就可以直接利用它本身产生多个线程
程序2:
package com.dr.runnable1;
class MyThread1 implements Runnable{
    private  int ticket=10;
    public void run(){
        for(int i=0;i<500;i++){
                System.out.println("卖票----->"+(this.ticket--));
        }
    }
}
public class Demo2 {
    public static void main(String args[]){
        MyThread1 mt=new MyThread1();
        Thread t1=new Thread(mt);
        Thread t2=new Thread(mt);
        Thread t3=new Thread(mt);
        t1.start();
        t2.start();
        t3.start();
    } 
} 


你可能感兴趣的:(java实现多线程的两种方法的比较)