java实现多线程的方式以及run方法和start方法的区别

1.java实现多线程的两种方式

  1)java类继承Thread类

   继承Thread类是实现java多线程的一种方式,但是实际上Thread类本身实现了Runnable接口,它代表了线程的一个实例。

   启动线程唯一的方法就是调用Thread类的start()方法,这时候便开启了一个新的线程。然后线程会自动调用run方法,你可以重写run方法,在里面添上自己想要执行的代码。

   以下附上代码:

   public Mythread extends Thread{

    @override

public void run(){

                System.out.println("这里面可以写上自己要实现的代码");

}

}

    然后在合适的位置启动线程

    MyThread myThread = new Mythread();

    myThread.start();//run方法会自动执行

    2)java类实现Runnable接口

    有时候我们经常选择实现Runnable接口来实现多线程,原因是java只支持单继承,如果你的类已经继承了一个其他类,这时候你就要通过实现Runnable接口来实现多线程。

       public class MyThread extends OtherClass implements Runnable {
  public void run() {
   System.out.println("写入自己要执行的代码");
  }
}

  为了启动线程,你需要实例化一个Thread对象,并将实现了Runnable接口的实例对象(MyThread)传入Thread的构造函数中,再调用start方法开启一个线程。

MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();

   这时候thread类中的run方法就会自动调用你的run方法(也就是你的run方法会自动执行)。

2.多线程中run方法和start方法的区别

       1) start:
	用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 
run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

       2) run:run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。
	总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.。

	两种方式的比较 :
	实际中往往采用实现Runable接口,一方面因为java只支持单继承,继承了Thread类就无法再继续继承其它类,而且Runable接口只有一个run方法;另一方面通过结果可以看出实现Runable接口才是真正的多线程……

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值