溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何創建線程

發布時間:2021-06-07 11:40:35 來源:億速云 閱讀:133 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Java如何創建線程的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Java創建線程主要有三種方式:繼承Thread類創建線程、實現Runnable接口創建線程和實現Callable和Future創建線程。

繼承Thread類

public class Thread1 extends Thread {
  @Override
  public void run() {
    for (int i = 0; i < 10; i++) {
      System.out.println(getName() + ": " + i);
    }
  }
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + ": " + i);
      if (i == 2) {
        new Thread1().start();
        new Thread1().start();
      }
    }
  }
}

實現Runnable接口

public class Thread2 implements Runnable {
  @Override
  public void run() {
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + ": " + i);
    }
  }
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + ": " + i);
      if (i == 2) {
        Thread2 thread2 = new Thread2();
        new Thread(thread2).start();
        new Thread(thread2).start();
      }
    }
  }
}

實現Callable接口

FutureTask類包裝Callable對象時,封裝了Callable對象的call()方法的返回值。

class Thread3 implements Callable {
  @Override
  public Integer call() throws Exception {
    int i = 0;
    for (; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + ": " + i);
    }
    return i;
  }
  public static void main(String[] args) {
    Thread3 thread3 = new Thread3();
    FutureTask<Integer> futureTask = new FutureTask<Integer>(thread3);
    for (int i = 0; i < 10; i++) {
      System.out.println(Thread.currentThread().getName() + " :" + i);
      if (i == 2) {
        new Thread(futureTask, "有返回值的線程").start();
      }
    }
    try {
      System.out.println("子線程返回值: " + futureTask.get());
    } catch (InterruptedException e) {
      e.printStackTrace();
    } catch (ExecutionException e) {
      e.printStackTrace();
    }
  }
}

三種方式優缺點

采用實現接口(Runnable和Callable)的方式,線程類還可以繼承其他的類。實現接口的線程對象還可以用來創建多個線程,可以實現資源共享。缺點是不能使用this指針來獲取線程的名字等。

采用繼承Thread類的方式,線程不能繼承其他的類,但是Thread類中有getName方法,因為可以直接使用this.getName()來獲取當前線程的名字。

感謝各位的閱讀!關于“Java如何創建線程”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女