最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Java實(shí)現(xiàn)多線程的三種方式

 更新時(shí)間:2016年03月27日 11:04:20   作者:趙杰A-124  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多線程的三種方式,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)多線程的三種方式,供大家參考,具體內(nèi)容如下

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();
//      }
//    }
    
    //方法二:實(shí)現(xiàn)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();
//      }
//    }

    //方法三:實(shí)現(xiàn)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方法為線程執(zhí)行體,ThreadExtendsThread對(duì)象即為線程對(duì)象。

方法二,實(shí)現(xiàn)Runnable接口

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

run方法為線程執(zhí)行體,使用時(shí)New一個(gè)Thread對(duì)象,Runnable對(duì)象作為target傳遞給Thread對(duì)象。且同一個(gè)Runnable對(duì)象可作為多個(gè)Thread的target,這些線程均共享Runnable對(duì)象的實(shí)例變量。

方法三,實(shí)現(xiàn)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接口類(lèi)似于Runnable接口,但比對(duì)方強(qiáng)大,線程執(zhí)行體為call方法,該方法具有返回值和可拋出異常。使用時(shí)將Callable對(duì)象包裝為FutureTask對(duì)象,通過(guò)泛型指定返回值類(lèi)型。可稍候調(diào)用FutureTask的get方法取回執(zhí)行結(jié)果。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 淺析java class 文件

    淺析java class 文件

    以下是對(duì)java中的class文件進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • Java讀取Excel、docx、pdf和txt等文件萬(wàn)能方法舉例

    Java讀取Excel、docx、pdf和txt等文件萬(wàn)能方法舉例

    在Java開(kāi)發(fā)中處理文件是常見(jiàn)需求,本文以實(shí)際代碼示例詳述如何使用ApachePOI庫(kù)及其他工具讀取和寫(xiě)入Excel、Word、PDF等文件,介紹了ApachePOI、ApachePDFBox和EasyExcel等庫(kù)的使用方法,幫助開(kāi)發(fā)者有效讀取不同格式文件,需要的朋友可以參考下
    2024-09-09
  • Maven 倉(cāng)庫(kù)國(guó)內(nèi)鏡像源收藏(小結(jié))

    Maven 倉(cāng)庫(kù)國(guó)內(nèi)鏡像源收藏(小結(jié))

    這篇文章主要介紹了Maven 倉(cāng)庫(kù)國(guó)內(nèi)鏡像源收藏(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java內(nèi)部類(lèi)與匿名內(nèi)部類(lèi)

    Java內(nèi)部類(lèi)與匿名內(nèi)部類(lèi)

    這篇文章主要介紹了Java內(nèi)部類(lèi)與匿名內(nèi)部類(lèi),內(nèi)部類(lèi)可以直接訪問(wèn)外部類(lèi)的成員,包括私有成員。外部類(lèi)要訪問(wèn)內(nèi)部類(lèi)的成員,必須要建立內(nèi)部類(lèi)的對(duì)象,更多相關(guān)內(nèi)容可以參考下面文章內(nèi)容
    2022-06-06
  • Java基礎(chǔ)之選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)

    Java基礎(chǔ)之選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)

    這篇文章主要介紹了Java基礎(chǔ)之選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 一文弄懂Java中ThreadPoolExecutor

    一文弄懂Java中ThreadPoolExecutor

    ThreadPoolExecutor是Java中的一個(gè)線程池實(shí)現(xiàn),它可以管理和控制多個(gè) Worker Threads,本文就詳細(xì)的介紹一下Java中ThreadPoolExecutor,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Java實(shí)現(xiàn)斗地主最簡(jiǎn)代碼實(shí)例

    Java實(shí)現(xiàn)斗地主最簡(jiǎn)代碼實(shí)例

    在本篇文章里小編給各位分享的是關(guān)于Java實(shí)現(xiàn)斗地主最簡(jiǎn)代碼實(shí)例,有興趣的朋友們可以參考下。
    2020-05-05
  • Java?file類(lèi)中renameTo方法操作實(shí)例

    Java?file類(lèi)中renameTo方法操作實(shí)例

    renameTo()方法是File類(lèi)的一部分,renameTo()函數(shù)用于將文件的抽象路徑名重命名為給定的路徑名??,下面這篇文章主要給大家介紹了關(guān)于Java?file類(lèi)中renameTo方法操作的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Java中基于注解的代碼生成工具M(jìn)apStruct映射使用詳解

    Java中基于注解的代碼生成工具M(jìn)apStruct映射使用詳解

    MapStruct?作為一個(gè)基于注解的代碼生成工具,為我們提供了一種更加優(yōu)雅、高效的解決方案,本文主要為大家介紹了它的具體使用,感興趣的可以了解下
    2025-02-02
  • java冒泡排序和選擇排序示例

    java冒泡排序和選擇排序示例

    這篇文章主要介紹了java冒泡排序和選擇排序示例,需要的朋友可以參考下
    2014-05-05

最新評(píng)論

古交市| 临颍县| 大邑县| 贵定县| 都江堰市| 浑源县| 朔州市| 都兰县| 都江堰市| 栖霞市| 苗栗市| 疏附县| 东台市| 九龙坡区| 庆安县| 长子县| 根河市| 从化市| 田东县| 塔城市| 汾西县| 黄大仙区| 剑川县| 大渡口区| 城市| 嘉义县| 廊坊市| 曲水县| 广丰县| 乌拉特后旗| 武威市| 高阳县| 蓬溪县| 讷河市| 邛崃市| 西丰县| 揭东县| 建瓯市| 元阳县| 湖州市| 高州市|