国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java創(chuàng)建多線程的七種方式

這篇具有很好參考價值的文章主要介紹了java創(chuàng)建多線程的七種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、繼承Thread,重寫run方法

通過自定義一個類(這里起名為:MyThread),繼承Thread類,重寫run方法,最后在main方法中new出MyThread實例,調(diào)用這個實例的繼承的Thread類的start方法創(chuàng)建一個線程。

class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("繼承Thread,重寫run方法創(chuàng)建線程");
    }
}
 
public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
    }
}

二、實現(xiàn)Runnable接口,重寫run方法

通過自定義一個類(這里起名為:MyRunnable)實現(xiàn)Runnable接口,重寫run方法,最后在main方法new出MyRunnable實例和Thread實例,最后通過start方法創(chuàng)建并啟動線程。

class MyRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println("實現(xiàn)Runnable接口,重寫run方法");
    }
}
 
public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start();
    }
}

三、使用匿名內(nèi)部類創(chuàng)建 Thread 子類對象

直接創(chuàng)建Thread子類,同時實例化出一個對象,重寫run方法,最后通過start方法創(chuàng)建并啟動線程。

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread() {
            @Override
            public void run() {
                System.out.println("使用匿名內(nèi)部類創(chuàng)建 Thread 子類對象");
            }
        };
        thread.start();
    }
}

四、使用匿名內(nèi)部類,實現(xiàn)Runnable接口

通過使用使用匿名內(nèi)部類,實現(xiàn)Runnable接口作為Thread構(gòu)造方法的參數(shù),最后通過start創(chuàng)建并啟動線程。

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("使用匿名內(nèi)部類,實例Runnable接口作為構(gòu)造參數(shù)");
            }
        });
        thread.start();
    }
}

五、lambda表達式

lambda本質(zhì)上就是一個“匿名函數(shù)”,()表示函數(shù)的形參,{}表示函數(shù)體,->特殊語法,表示它是lambda表達式(->是從C++那里抄來的)。

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
           System.out.println("使用lambda表示創(chuàng)建線程");
        });
        thread.start();
    }
 
}

六、實現(xiàn)Callable接口

通過自定義類(這里起名為:MyCallable),實現(xiàn)Callable接口,重寫call方法(call方法可以理解為線程需要執(zhí)行的任務),并且?guī)в蟹祷刂?,這個返回表示一個計算結(jié)果,如果無法計算結(jié)果,則引發(fā)Exception異常,接著創(chuàng)建Callable實例,使用FutrueTast類包裝Callable對象,F(xiàn)utureTask是一個包裝器,需要接收Callable實例來創(chuàng)建,并且有兩個構(gòu)造函數(shù),一個參數(shù)只有Callable對象,另一個參數(shù)不僅有Callable對象,還有一個泛型的result參數(shù),最后使用FutureTask對象作為Thread的構(gòu)造參數(shù),通過start方法創(chuàng)建并啟動線程;

class MyCallableTest implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        System.out.println("創(chuàng)建線程:" + Thread.currentThread().getName());
        return 2;
    }
}

public class Main {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        FutureTask<Integer> task = new FutureTask<>(new MyCallableTest());
        Thread thread = new Thread(task);
        thread.start();
        System.out.println("創(chuàng)建線程的返回結(jié)果為:" + task.get());
    }
 
}

七、使用線程池創(chuàng)建線程

?在Java中,線程池的本體叫ThreadPoolExecutor,他的構(gòu)造方法寫起來十分麻煩,為了簡化構(gòu)造方法,標準庫就提供了一系列工廠方法,簡化使用;

什么是工廠模式?

????????工廠模式,將創(chuàng)建產(chǎn)品實例的權(quán)利移交工廠,我們不再通過new來創(chuàng)建我們所需的對象,而是通過工廠來獲取我們需要的產(chǎn)品。降低了產(chǎn)品使用者與使用者之間的耦合關系;

也就是說這里創(chuàng)建線程池沒有顯式new,而是通過Executors這個靜態(tài)方法newCaChedThreadPool來完成的;文章來源地址http://www.zghlxwxcb.cn/news/detail-708067.html

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class Pool {
    public static void main(String[] args) {
        ExecutorService pool = Executors.newCachedThreadPool();
        pool.submit(new Runnable() {
            @Override
            public void run() {
                //執(zhí)行業(yè)務邏輯
                for(int i = 1; i <= 100; i++) {
                    System.out.println("線程:" + Thread.currentThread().getName() + "執(zhí)行了任務" + i + "~");
                }
            }
        });
        pool.submit(new Runnable() {
            @Override
            public void run() {
                //執(zhí)行業(yè)務邏輯
                for(int i = 101; i <= 200; i++) {
                    System.out.println("線程:" + Thread.currentThread().getName() + "執(zhí)行了任務" + i + "~");
                }
            }
        });
        pool.submit(new Runnable() {
            @Override
            public void run() {
                //執(zhí)行業(yè)務邏輯
                for(int i = 201; i <= 300; i++) {
                    System.out.println("線程:" + Thread.currentThread().getName() + "執(zhí)行了任務" + i + "~");
                }
            }
        });
    }
}

到了這里,關于java創(chuàng)建多線程的七種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • java 實現(xiàn)開啟異步線程的幾種方式

    在Java中,有多種方式可以實現(xiàn)異步線程以避免在主線程中執(zhí)行耗時操作導致界面卡頓的問題。以下是幾種常用的方式: 使用 Thread 類:可以使用 Thread 類來創(chuàng)建一個新的線程,并在其 run() 方法中執(zhí)行耗時操作。例如: 使用 Runnable 接口:可以通過實現(xiàn) Runnable 接口并在其中實現(xiàn)

    2024年02月14日
    瀏覽(25)
  • 【MYSQL高級】Mysql 表的七種連接方式【附帶練習sql】

    【MYSQL高級】Mysql 表的七種連接方式【附帶練習sql】

    圖形 連接方式 說明 SQL 內(nèi)連接 共有部分 SELECT select_list FROM TableA A INNER JOIN TableB B ON A.Key = B.Key; 左連接 A表獨有+共有部分 SELECT select_list FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key; 右連接 B表獨有+共有部分 SELECT select_list FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key; A的獨有 SELECT select_l

    2024年02月04日
    瀏覽(21)
  • Java多線程 - Java創(chuàng)建線程的4種方式

    Java多線程 - Java創(chuàng)建線程的4種方式

    1. Java創(chuàng)建線程有哪幾種方式? 一個線程在Java中使用一個Thread實例來描述。Thread類是Java語言的一個重要的基礎類,位于java.lang包中。Thread類有不少非常重要的屬性和方法,用于存儲和操作線程的描述信息。 Thread類的構(gòu)造方法: 1.1 線程創(chuàng)建方法一:繼承Thread類創(chuàng)建線程類 (

    2023年04月08日
    瀏覽(19)
  • Java多線程(1)---多線程認識、四種創(chuàng)建方式以及線程狀態(tài)

    Java多線程(1)---多線程認識、四種創(chuàng)建方式以及線程狀態(tài)

    目錄 前言 一.Java的多線程 1.1多線程的認識? 1.2Java多線程的創(chuàng)建方式 1.3Java多線程的生命周期 1.4Java多線程的執(zhí)行機制 二.創(chuàng)建多線程的四種方式 2.1繼承Thread類 ?創(chuàng)建線程? ?Thread的構(gòu)造方法和常見屬性 ?2.2.實現(xiàn)Runnable接口 ?創(chuàng)建線程 ?使用lambda表達式創(chuàng)建 2.3實現(xiàn)Callable接口

    2024年02月14日
    瀏覽(24)
  • 【面試精講】Java線程6種狀態(tài)和工作原理詳解,Java創(chuàng)建線程的4種方式

    【面試精講】Java線程6種狀態(tài)和工作原理詳解,Java創(chuàng)建線程的4種方式

    Java線程6種狀態(tài)和工作原理詳解,Java創(chuàng)建線程的4種方式 一、Java線程的六種狀態(tài) 二、Java線程是如何工作的? 三、BLOCKED 和 WAITING 的區(qū)別 四、start() 和 run() 源碼分析 五、Java創(chuàng)建線程的所有方式和代碼詳解 1. 繼承Thread類 2. 實現(xiàn)Runnable接口 3. 實現(xiàn)Callable接口與FutureTask 4. 使用線

    2024年03月13日
    瀏覽(22)
  • java創(chuàng)建多線程的7種方式---代碼詳解

    運行結(jié)果如下: 可以看出,主線程是不需要等待子線程執(zhí)行完再執(zhí)行下面的程序,主線程執(zhí)行完了子線程還在執(zhí)行,因此,子線程報錯是不會影響主線程的。 運行結(jié)果: 運行結(jié)果: 運行結(jié)果: callable和future現(xiàn)成可以獲取到返回的結(jié)果,底層是基于LockSupport,從JDK5就提供了C

    2024年02月15日
    瀏覽(17)
  • Java多線程 - 創(chuàng)建的三種方式介紹

    什么是線程 ? 線程(thread)是一個程序內(nèi)部的一條執(zhí)行路徑。 我們之前啟動程序執(zhí)行后,main方法的執(zhí)行其實就是一條單獨的執(zhí)行路徑。 程序中如果只有一條執(zhí)行路徑,那么這個程序就是單線程的程序。 什么是多線程 ? 多線程是指從軟硬件上實現(xiàn)多條執(zhí)行流程的技術。 方式一

    2024年02月20日
    瀏覽(30)
  • Java并發(fā)(三)----創(chuàng)建線程的三種方式及查看進程線程

    Java并發(fā)(三)----創(chuàng)建線程的三種方式及查看進程線程

    例如: 輸出 注意:這里通過 @Slf4j 注解打印的日志 把【線程】和【任務】(要執(zhí)行的代碼)分開 Thread 代表線程 Runnable 可運行的任務(線程要執(zhí)行的代碼) 例如: 輸出 Java 8 以后可以使用 lambda 精簡代碼 小結(jié) 方法1 是把線程和任務合并在了一起,方法2 是把線程和任務分開

    2023年04月24日
    瀏覽(25)
  • 【Java面試題】線程創(chuàng)建的三種方式及區(qū)別?

    繼承Thread類,子類重寫run()方法,調(diào)用子類的strat()啟動線程。 實現(xiàn)Runnable接口,實現(xiàn)run()方法,調(diào)用對象start()啟動線程。 實現(xiàn)Callable接口,實現(xiàn)call()方法,用FutureTask()封裝實現(xiàn)類。使用FutureTask對象作為Thread對象調(diào)用start()啟動線程,調(diào)用FutureTask對象的get()

    2024年02月12日
    瀏覽(25)
  • 大家都說Java有三種創(chuàng)建線程的方式!并發(fā)編程中的驚天騙局!

    大家都說Java有三種創(chuàng)建線程的方式!并發(fā)編程中的驚天騙局!

    在Java中,創(chuàng)建線程是一項非常重要的任務。線程是一種輕量級的子進程,可以并行執(zhí)行,使得程序的執(zhí)行效率得到提高。Java提供了多種方式來創(chuàng)建線程,但許多人都認為Java有三種創(chuàng)建線程的方式,它們分別是 繼承Thread類、實現(xiàn)Runnable接口和使用線程池。 但是,你們知道嗎?

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包