gzyueqian
13352868059

实现java多线程的方法都有哪些呢?

更新时间: 2020-05-14 16:04:31来源: 粤嵌教育浏览量:8122

   实现java多线程的方式都有哪些呢?这个问题是在我们粤嵌科技的java培训班的学员会经常问到的问题,我们的讲师也根据同学们的问题做出了相对应的回答。粤嵌科技的小编相信肯定也有很多在学习java的学员肯定也会遇到这样的问题,下面粤嵌科技的小编就把我们的java讲师的回答整理出来给大家。

  1、继承Thread类实现多线程


  继承Thread类的方法尽管被我列为一种多线程实现方式,但Thread本质上也是实现了Runnable接口的一个实例,它代表一个线程的实例,并且,启动线程的方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如:


  [java] view plain copypublic class MyThread extends Thread {


  public void run() {


  System.out.println("MyThread.run()");


  }


  }


  在合适的地方启动线程如下:


  [java] view plain copyMyThread myThread1 = new MyThread();


  MyThread myThread2 = new MyThread();


  myThread1.start();


  myThread2.start();


  2、实现Runnable接口方式实现多线程


  如果自己的类已经extends另一个类,就无法直接extends Thread,此时,必须实现一个Runnable接口,如下

  [java] view plain copypublic class MyThread extends OtherClass implements Runnable {


  public void run() {


  System.out.println("MyThread.run()");


  }


  }


  为了启动MyThread,需要首先实例化一个Thread,并传入自己的MyThread实例:


  [java] view plain copyMyThread myThread = new MyThread();


  Thread thread = new Thread(myThread);


  thread.start();


  事实上,当传入一个Runnable target参数给Thread后,Thread的run()方法就会调用target.run(),参考JDK源代码:


  [java] view plain copypublic void run() {


  if (target != null) {


  target.run();


  }


  }


  3、使用ExecutorService、Callable、Future实现有返回结果的多线程


  ExecutorService、Callable、Future这个对象实际上都是属于Executor框架中的功能类。 这里面对该框架做了很详细的解释。返回结果的线程是在JDK1.5中引入的新特征,确实很实用,有了这种特征我就不需要再为了得到返回值而大费周折了,而且即便实现了也可能漏洞百出。


  以上就是我们java培训讲师给大家的答案了,如果说你想要学习java语言的话,那么粤嵌科技欢迎大家来我们公司的java培训班进行实地考察,也可以点击我们文章下面的获取试听资格按钮来获取我们的java课程免费试听资格,在试听中可以更加深入的了解我们粤嵌科技。

免费预约试听课