JAVA多线程有哪几种实现方式呢?(java多线程三种方式)

  本篇文章为你整理了JAVA多线程有哪几种实现方式呢?(java多线程三种方式)的详细内容,包含有java多线程实现原理 java多线程三种方式 java中实现多线程一般使用两种方法 java多线程三种 JAVA多线程有哪几种实现方式呢?,希望能帮助你了解 JAVA多线程有哪几种实现方式呢?。

  

  下文笔者讲述java中多线程的实现方式,如下所示:

  

 JAVA中多线程主要有以下实现方式:

 

   1.继承Thread类

   2.实现Runnable接口

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

   注意事项:

   方式1和方式2线程运行完毕后,是没有返回值

  

 

  继承Thread类实现多线程

  

 注意事项:

 

   1.Thread本质上也是实现了Runnable接口的一个实例

   Thread它指一个线程实例

   2.启动Thread类,需使用start()方法

   start()方法是一个native方法

   它的功能:启动一个新线程,并执行run()方法

   3.使用Thread生成多线程,我们只需继承Thread类,重写run方法即可

  

 

  

public class MyThread extends Thread {

 

   public void run() {

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

  //开启两个线程

  MyThread myThread1 = new MyThread();

  MyThread myThread2 = new MyThread();

  myThread1.start();

  myThread2.start();

 

  

  使用Runnable接口方式实现多线程

  

//定义一个多线程

 

  public class MyThread extends TestClass implements Runnable {

   public void run() {

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

  //启动线程

  MyThread myThread = new MyThread();

  Thread thread = new Thread(myThread);

  thread.start();

 

  

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

  

ExecutorService、Callable、Future 对象都属于Executor框架中的功能类

 

  

 

  例:多线程带返回值

  

import java.util.concurrent.*;

 

  import java.util.Date;

  import java.util.List;

  import java.util.ArrayList;

  * 有返回值的线程

  @SuppressWarnings("unchecked")

  public class Test {

  public static void main(String[] args) throws ExecutionException,

   InterruptedException {

   System.out.println("----程序开始运行----");

   Date date1 = new Date();

   int taskSize = 5;

   // 创建一个线程池

   ExecutorService pool = Executors.newFixedThreadPool(taskSize);

   // 创建多个有返回值的任务

   List Future list = new ArrayList Future ();

   for (int i = 0; i taskSize; i++) {

   Callable c = new MyCallable(i + " ");

   // 执行任务并获取Future对象

   Future f = pool.submit(c);

   // System.out.println(" " + f.get().toString());

   list.add(f);

   // 关闭线程池

   pool.shutdown();

   // 获取所有并发任务的运行结果

   for (Future f : list) {

   // 从Future对象上获取任务的返回值,并输出到控制台

   System.out.println(" " + f.get().toString());

   Date date2 = new Date();

   System.out.println("----程序结束运行----,程序运行时间【"

   + (date2.getTime() - date1.getTime()) + "毫秒】");

  class MyCallable implements Callable Object {

  private String taskNum;

  MyCallable(String taskNum) {

   this.taskNum = taskNum;

  public Object call() throws Exception {

   System.out.println(" " + taskNum + "任务启动");

   Date dateTmp1 = new Date();

   Thread.sleep(1000);

   Date dateTmp2 = new Date();

   long time = dateTmp2.getTime() - dateTmp1.getTime();

   System.out.println(" " + taskNum + "任务终止");

   return taskNum + "任务返回运行结果,当前任务时间【" + time + "毫秒】";

  }

 

  

  以上就是JAVA多线程有哪几种实现方式呢?(java多线程三种方式)的详细内容,想要了解更多 JAVA多线程有哪几种实现方式呢?的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: