大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 3種創(chuàng)建線程的方式

3種創(chuàng)建線程的方式

更新時(shí)間:2020-11-06 17:52:08 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1314次

在 Java 中使用 Thread 類(lèi)代表線程,所有的線程對(duì)象都必須是 Thread 類(lèi)或者其子類(lèi)的實(shí)例,因此,創(chuàng)建線程實(shí)際上就是創(chuàng)建Thread類(lèi)。本文我們向大家介紹3種創(chuàng)建線程的方式,為我們后面學(xué)習(xí)多線程埋下伏筆。


在Java 中有3種創(chuàng)建線程方式,下面一一學(xué)習(xí):

1. 繼承 Thread 類(lèi)

step 1 定義一個(gè)類(lèi)繼承自 Thread 類(lèi),然后重寫(xiě)該類(lèi)的 run 方法,這個(gè)方法的內(nèi)容表示線程要完成的任務(wù)

step 2 創(chuàng)建線程對(duì)象,即創(chuàng)建 Thread 類(lèi)子類(lèi)的實(shí)例

step 3 調(diào)用步驟二中創(chuàng)建出來(lái)的對(duì)象的 start 方法來(lái)啟動(dòng)線程

public class CreateThreadByExtendsThread extends Thread {

@Override

public void run() {

IntStream.rangeClosed(1, 10).forEach(i -> System.out.println(Thread.currentThread().getName() + " " + i));

}

public static void main(String[] args) {

CreateThreadByExtendsThread threadOne = new CreateThreadByExtendsThread();

CreateThreadByExtendsThread threadTwo = new CreateThreadByExtendsThread();

CreateThreadByExtendsThread threadThree = new CreateThreadByExtendsThread();

threadOne.start();

threadTwo.start();

threadThree.start();

}

}


2.實(shí)現(xiàn) Runnable 接口

step 1 定義一個(gè)類(lèi)實(shí)現(xiàn) Runnable 接口,然后實(shí)現(xiàn)該接口的 run 方法,這個(gè)方法的內(nèi)容同樣也表示線程要完成的任務(wù)

step 2 創(chuàng)建 Runnable 接口實(shí)現(xiàn)類(lèi)的實(shí)例,并使用該實(shí)例作為 Thraed 構(gòu)造方法的參數(shù)創(chuàng)建 Thread 類(lèi)的對(duì)象,該對(duì)象才是真正的線程對(duì)象

step 3 調(diào)用線程對(duì)象的 start 方法來(lái)啟動(dòng)該線程

public class CreateThreadByImplementsRunnable implements Runnable {

@Override

public void run() {

IntStream.rangeClosed(1, 10).forEach(i -> System.out.println(Thread.currentThread().getName() + " " + i));

}

public static void main(String[] args) {

CreateThreadByImplementsRunnable target = new CreateThreadByImplementsRunnable();

new Thread(target, "thread-one").start();

new Thread(target, "thread-two").start();

new Thread(target, "thread-three").start();

}

}


3. 實(shí)現(xiàn) Callable 接口

step 1 定義一個(gè)類(lèi)實(shí)現(xiàn) Callable 接口,然后實(shí)現(xiàn)該接口的 call 方法,這個(gè)方法的內(nèi)容同樣也表示線程要完成的任務(wù),并且有返回值

step 2 創(chuàng)建 Callable 接口實(shí)現(xiàn)類(lèi)的實(shí)例,使用 FutureTask 類(lèi)來(lái)包裝 Callable 對(duì)象,該 FutureTask 對(duì)象封裝了 Callable 對(duì)象的 call 方法的返回值

step 3 并使用 FutureTask 對(duì)象作為 Thraed 構(gòu)造方法的參數(shù)創(chuàng)建 Thread 對(duì)象,并調(diào)用該對(duì)象的 start 方法啟動(dòng)線程

step 4 調(diào)用 FutureTask 對(duì)象的 get 方法獲取線程執(zhí)行結(jié)束后的返回值

public class CreateThreadByImplementsCallable implements Callable{

@Override

public Integer call() {

AtomicInteger count = new AtomicInteger();

IntStream.rangeClosed(0, 10).forEach(i -> {

System.out.println(Thread.currentThread().getName() + " " + i);

count.getAndIncrement();

});

return count.get();

}

public static void main(String[] args) {

CreateThreadByImplementsCallable target = new CreateThreadByImplementsCallable();

FutureTaskfutureTask = new FutureTask<>(target);

IntStream.rangeClosed(0, 10).forEach(i -> {

System.out.println(Thread.currentThread().getName() + " 的循環(huán)變量 i 的值" + i);

if (i == 8) {

new Thread(futureTask, "有返回值的線程").start();

}

});

try {

System.out.println("有返回值線程的返回值:" + futureTask.get());

} catch (InterruptedException | ExecutionException e) {

e.printStackTrace();

}

}

}


通過(guò)以上可以看出,其實(shí)通過(guò)實(shí)現(xiàn) Runnable 接口和實(shí)現(xiàn) Callable 接口這兩種方式創(chuàng)建線程基本相同,采用實(shí)現(xiàn) Runnable 和 Callable 接口的方式創(chuàng)建線程時(shí),線程類(lèi)只是實(shí)現(xiàn)接口,還可以繼承其它類(lèi)(PS:Java 單繼承決定)。在這種方式下,多個(gè)線程可以共享同一個(gè) target對(duì)象,所以非常適合多個(gè)相同線程來(lái)處理同一份資源的情況。還有一點(diǎn)就是,使用繼承 Thread 類(lèi)的方式創(chuàng)建多線程時(shí),編寫(xiě)簡(jiǎn)單,如果需要訪問(wèn)當(dāng)前線程,則無(wú)需使用 Thread.currentThread() 方法,直接使用 this 即可獲得當(dāng)前線程。


最后,3種創(chuàng)建線程的方式已全部講完了,相信對(duì)于以上的內(nèi)容有所了解和掌握吧,想要全方位學(xué)習(xí)Java多線程的小伙伴可以觀看本站的Java多線程教程,里面對(duì)多線程的講解很全面透徹,可以加深我們對(duì)多線程的理解。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 在线日韩亚洲 | 第一国内永久免费福利视频 | 欧美成人精品一级高清片 | 国产亚洲精品一区999 | 2017天天干天天射 | 在线观看免费av网站 | 五月婷婷色播 | 欧洲性大片xxxxx久久久 | 亚洲在线视频一区 | 一 级 黄 中国色 片 | 国产精品香蕉在线观看首页 | 亚洲日本视频在线 | 97欧美精品一区二区三区 | 香蕉视频网站在线观看 | 国产 日韩 一区 | 日本一区高清视频 | 精品国产高清自在线一区二区三区 | 欧美中文综合在线视频 | 欧美激情在线 | 你懂的国产| 这里只有精品99re在线 | 亚洲精品一区二区三区国产 | 久久视频这里只有精品 | 99精品国产在这里白浆 | 亚洲欧美一 | 久久一区二区三区精品 | 精品亚洲视频在线观看 | 国产成人综合95精品视频免费 | 久久久久久久91精品免费观看 | 国产成 人 综合 亚洲绿色 | 国产日本欧美亚洲精品视 | 欧美成人午夜在线全部免费 | 欧美日韩专区 | 国产成人香蕉在线视频网站 | 国产欧美久久久精品影院 | 精品国产线拍大陆久久尤物 | 国产100页| 欧美精品在欧美一区二区 | 国内精品视频在线观看 | 国内精品久久久久激情影院 | 香蕉视频18 |