java实现多线程有两种方法

java实现多线程有两种方法

1、继承Thread类

2、实现Runnable接口

这两种方法的共同点:

不论用哪种方法,都必须用Thread(如果是Thead子类就用它本身)产生线程,然后再调用start()方法。

两种方法的不同点:

1、继承Thread类有一个缺点就是单继承,而实现Runnable接口则弥补了它的缺点,可以实现多继承

2、继承Thread类必须如果产生Runnable实例对象,就必须产生多个Runnable实例对象,然后再用Thread产生多个线程;而实现Runnable接口,只需要建立一个实现这个类的实例,然后用这一个实例对象产生多个线程。即实现了资源的共享性

基于以上两点所以建议用第二种方法
下面用例子来做说明

程序1:

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();

// mt1.run();//线程执行,使用start方法

// mt2.run();

// mt3.run();

//第二种方法

// MyThread mt1=new MyThread(“线程A”);

// MyThread mt2=new MyThread(“线程B”);

// MyThread mt3=new MyThread(“线程C”);

// mt1.start();

// mt1.start();//线程只能启动一次

// mt2.start();

// mt3.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++)

    {

        if(this.ticket>0)

        {

            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();

} 

}

这个程序是实现Runnable了,产生一类的实例对象,然后用Thread产生多个线程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值