• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解Java实现多线程的三种方式

java 搞代码 4年前 (2022-01-09) 27次浏览 已收录 0个评论

本文实例为大家分享了Java实现多线程的三种方式,供大家参考,具体内容如下

import java.util.concurrent.Callable;import java.util.concurrent.FutureTask; public class Main {   public static void main(String[] args) {    //方法一:继承Thread    int i = 0;//    for(; i < 100; i++){//      System.out.println(Thread.currentThread().getName() + " " + i);//      if (i == 5) {//        ThreadExtendsThread threadExtendsThread = new ThreadExtendsThread();//        threadExtendsThread.start();//      }//    }         //方法二:实现Runnable//    for(i = 0; i < 100; i++){//      System.out.println(Thread.currentThread().getName() + " " + i);//      if (i == 5) {//        Runnable runnable = new ThreadImplementsRunnable();//        new Thread(runnable).start();//        new Thread(runnable).start();//      }//    }     //方法三:实现Callable接口    Callable<Integer> callable = new ThreadImplementsCallable();    FutureTask<Integer> futureTask = new FutureTask<>(callable);    for(i = 0; i < 100; i++){      System.out.println(Thread.currentThread().getName() + " " + i);      if (i == 5) {        new Thread(futureTask).start();        new Thread(futureTask).start();      }    }    try {      System.out.println("futureTask ruturn: " + futureTask.get());    } catch (Exception e) {      e.printStackTrace();    }  } }

方法一,继承自Thread

public class ThreadExtendsThread extends Thread {  private int i;  @Override  public void run() {    for(; i < 100; i++) {      System.out.println(getName() + " " + i);     }  }}

run方法为线程执行体,ThreadExtendsThread对象即为线程对象。

方法二,实现Runnable接口

public class ThreadImplementsRunnable implements Runnable {  private int i;  @Override  public void run() {    for(; i < 100; i++){      System.out.println(Thr<span>本文来源gaodai#ma#com搞*!代#%^码网5</span>ead.currentThread().getName() + " " + i);    }  }}

run方法为线程执行体,使用时New一个Thread对象,Runnable对象作为target传递给Thread对象。且同一个Runnable对象可作为多个Thread的target,这些线程均共享Runnable对象的实例变量。

方法三,实现Callable接口

import java.util.concurrent.Callable; public class ThreadImplementsCallable implements Callable<Integer> {  private int i;     @Override  public Integer call() throws Exception {    for(; i < 100; i++){      System.out.println(Thread.currentThread().getName() + " " + i);    }    return i;  }}

Callable接口类似于Runnable接口,但比对方强大,线程执行体为call方法,该方法具有返回值和可抛出异常。使用时将Callable对象包装为FutureTask对象,通过泛型指定返回值类型。可稍候调用FutureTask的get方法取回执行结果。

以上就是本文的全部内容,希望对大家的学习有所帮助。

更多详解Java实现多线程的三种方式相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解Java实现多线程的三种方式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址