国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java創建線程三種方式的優缺點

2024-07-14 08:43:11
字體:
來源:轉載
供稿:網友

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()來獲取當前線程的名字。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳谷县| 稻城县| 台江县| 五河县| 水富县| 博兴县| 南阳市| 武定县| 深圳市| 侯马市| 南部县| 阿荣旗| 吉隆县| 阳江市| 秀山| 广安市| 威宁| 阿合奇县| 兴安盟| 开平市| 门头沟区| 宣汉县| 荣昌县| 木兰县| 江孜县| 获嘉县| 瑞金市| 济南市| 淮南市| 绍兴市| 离岛区| 昌江| 合水县| 汉川市| 温宿县| 镇宁| 永和县| 宝清县| 定南县| 昌吉市| 榆树市|