欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java創(chuàng)建線程的方式解析

 更新時(shí)間:2022年07月28日 11:25:15   作者:0x3f3f3f3f  
這篇文章主要介紹了Java創(chuàng)建線程的方式解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助

繼承Thread,這里使用匿名內(nèi)部類

@Slf4j(topic = "c.Test1")
public class Test1 {
    public static void main(String[] args) {
        //創(chuàng)建線程對(duì)象
        Thread t = new Thread(){
            @Override
            public void run() {
                //要執(zhí)行的任務(wù)
                log.debug("running");
            }
        };
        //設(shè)置線程的名字
        t.setName("t1");
        //啟動(dòng)線程
        t.start();
        log.debug("running");
    }
}
/*
19:44:31.998 [main] DEBUG c.Test1 - running
19:44:31.998 [t1] DEBUG c.Test1 - running
*/

實(shí)現(xiàn)Runnable接口,配合Thread類,同樣用匿名內(nèi)部類

  • 把線程和任務(wù)分開
  • Thread表示線程
  • Runnable代表可運(yùn)行的任務(wù)
@Slf4j(topic = "c.Test2")
public class Test2 {
    public static void main(String[] args) {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                //要執(zhí)行的任務(wù)
                log.debug("running");
            }
        };
        //創(chuàng)建線程對(duì)象
        Thread t = new Thread(runnable, "t2");
        //啟動(dòng)線程
        t.start();
    }
}
//19:52:27.646 [t2] DEBUG c.Test2 - running

在javajava中,有@FunctionalInterface@FunctionalInterface注解意味著該接口只有一個(gè)抽象方法,即可以用lambdalambda表達(dá)式的方式簡(jiǎn)化

@Slf4j(topic = "c.Test2")
public class Test2 {
    public static void main(String[] args) {
        Runnable runnable = () -> {
            //要執(zhí)行的任務(wù)
            log.debug("running");
        };
        //創(chuàng)建線程對(duì)象
        Thread t = new Thread(runnable, "t2");
        //啟動(dòng)線程
        t.start();
    }
}

FutureTask配合Thread

因?yàn)镕utureTask可以接口一個(gè)Callable類型的參數(shù),用來(lái)處理有返回值的情況

@Slf4j(topic = "c.Test3")
public class Test3 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //創(chuàng)建任務(wù)對(duì)象
        FutureTask<Integer> task = new FutureTask<>(() -> {
            log.debug("running");
            Thread.sleep(1000);
            return 100;
        });
        /*
        用lambda化簡(jiǎn)前
         */
        FutureTask<Integer> task1 = new FutureTask<>(new Callable<Integer>() {
            @Override
            public Integer call() throws Exception {
                log.debug("running");
                Thread.sleep(1000);
                return 100;
            }
        });
        //參數(shù)1是任務(wù)的對(duì)象, 參數(shù)2是線程的名字
        Thread t = new Thread(task, "t3");
        t.run();
        //主線程堵塞,同步等待task執(zhí)行完畢的結(jié)果
        Integer integer = task.get();
        log.debug("結(jié)果是:{}", integer);
    }
}

到此這篇關(guān)于Java創(chuàng)建線程的方式解析的文章就介紹到這了,更多相關(guān)Java創(chuàng)建線程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Cloud?+?Nacos?+?Seata整合過(guò)程(分布式事務(wù)解決方案)

    Spring?Cloud?+?Nacos?+?Seata整合過(guò)程(分布式事務(wù)解決方案)

    Seata 是一款開源的分布式事務(wù)解決方案,致力于在微服務(wù)架構(gòu)下提供高性能和簡(jiǎn)單易用的分布式事務(wù)服務(wù),這篇文章主要介紹了Spring?Cloud?+?Nacos?+?Seata整合過(guò)程(分布式事務(wù)解決方案),需要的朋友可以參考下
    2022-03-03
  • java實(shí)現(xiàn)切割wav音頻文件的方法詳解【附外部jar包下載】

    java實(shí)現(xiàn)切割wav音頻文件的方法詳解【附外部jar包下載】

    這篇文章主要介紹了java實(shí)現(xiàn)切割wav音頻文件的方法,結(jié)合實(shí)例形式詳細(xì)分析了java切割wav音頻文件的相關(guān)原理、操作技巧與注意事項(xiàng),并附帶外部jar包供讀者下載,需要的朋友可以參考下
    2019-05-05
  • Spring Boot Security配置教程

    Spring Boot Security配置教程

    在本文里我們給大家分享了關(guān)于Spring Boot Security配置的相關(guān)步驟以及注意要點(diǎn),需要的朋友們跟著操作下。
    2019-05-05
  • Java線程狀態(tài)及切換、關(guān)閉線程的正確姿勢(shì)分享

    Java線程狀態(tài)及切換、關(guān)閉線程的正確姿勢(shì)分享

    這篇文章主要給大家介紹了關(guān)于Java線程狀態(tài)及切換、關(guān)閉線程的正確姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Java Socket通信(一)之客戶端程序 發(fā)送和接收數(shù)據(jù)

    Java Socket通信(一)之客戶端程序 發(fā)送和接收數(shù)據(jù)

    對(duì)于Socket通信簡(jiǎn)述,服務(wù)端往Socket的輸出流里面寫東西,客戶端就可以通過(guò)Socket的輸入流讀取對(duì)應(yīng)的內(nèi)容,Socket與Socket之間是雙向連通的,所以客戶端也可以往對(duì)應(yīng)的Socket輸出流里面寫東西,然后服務(wù)端對(duì)應(yīng)的Socket的輸入流就可以讀出對(duì)應(yīng)的內(nèi)容
    2016-03-03
  • java中使用DES加密解密實(shí)例

    java中使用DES加密解密實(shí)例

    這篇文章主要介紹了java中使用DES加密解密實(shí)例,需要的朋友可以參考一下
    2014-01-01
  • java中的引用類型之強(qiáng)軟弱虛詳解

    java中的引用類型之強(qiáng)軟弱虛詳解

    這篇文章主要給大家介紹了關(guān)于java中引用類型之強(qiáng)軟弱虛的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 淺談Java生命周期管理機(jī)制

    淺談Java生命周期管理機(jī)制

    最近有位細(xì)心的朋友在閱讀筆者的文章時(shí),對(duì)java類的生命周期問(wèn)題有一些疑惑,筆者打開百度搜了一下相關(guān)的問(wèn)題,看到網(wǎng)上的資料很少有把這個(gè)問(wèn)題講明白的,主要是因?yàn)槟壳皣?guó)內(nèi)java方面的教材大多只是告訴你“怎樣做”,但至于“為什么這樣做”卻不多說(shuō)
    2016-01-01
  • 詳解SpringCloud微服務(wù)之Rest

    詳解SpringCloud微服務(wù)之Rest

    今天帶大家學(xué)習(xí)SpringCloud微服務(wù)之Rest的有關(guān)知識(shí),文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • spring boot jpa寫原生sql報(bào)Cannot resolve table錯(cuò)誤解決方法

    spring boot jpa寫原生sql報(bào)Cannot resolve table錯(cuò)誤解決方法

    在本篇文章里小編給大家整理的是關(guān)于spring boot jpa寫原生sql報(bào)Cannot resolve table錯(cuò)誤的解決方法,需要的朋友學(xué)習(xí)下。
    2019-11-11

最新評(píng)論