中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中線程池創建的方式有哪些

發布時間:2021-04-21 17:15:51 來源:億速云 閱讀:133 作者:Leah 欄目:編程語言

本篇文章為大家展示了java中線程池創建的方式有哪些,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Java可以用來干什么

Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。

1. newCachedThreadPool

創建一個線程池,如果線程池中的線程數量過大,它可以有效的回收多余的線程,如果線程數不足,那么它可以創建新的線程。

public static void method() throws Exception {    ExecutorService executor = Executors.newCachedThreadPool();    for (int i = 0; i < 5; i++) {        final int index = i;        Thread.sleep(1000);        executor.execute(new Runnable() {            @Override            public void run() {                System.out.println(Thread.currentThread().getName() + "  " + index);            }        });    }}

2. newFixedThreadPool

創建固定大小的線程池。每次提交一個任務就創建一個線程,直到線程達到線程池的最大大小。線程池的大小一旦達到最大值就會保持不變,如果某個線程因為執行異常而結束,那么線程池會補充一個新線程。

public static void method_01() throws InterruptedException {    ExecutorService executor = Executors.newFixedThreadPool(1);    for (int i = 0; i < 10; i++) {        Thread.sleep(1000);        final int index = i;        executor.execute(() -> {            try {                Thread.sleep(2 * 1000);            } catch (InterruptedException e) {                e.printStackTrace();            }            System.out.println(Thread.currentThread().getName() + "  " + index);        });    }    executor.shutdown();}

3. newScheduledThreadPool

創建一個大小無限的線程池。此線程池支持定時以及周期性執行任務的需求。

public class TestScheduledThreadPoolExecutor {
 
    public static void main(String[] args) {
 
        ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
 
        exec.scheduleAtFixedRate(new Runnable() {//每隔一段時間就觸發異常
 
                      @Override
 
                      publicvoid run() {
 
                           //throw new RuntimeException();
 
                           System.out.println("================");
 
                      }
 
                  }, 1000, 5000, TimeUnit.MILLISECONDS);
 
        exec.scheduleAtFixedRate(new Runnable() {//每隔一段時間打印系統時間,證明兩者是互不影響的
 
                      @Override
 
                      publicvoid run() {
 
                           System.out.println(System.nanoTime());
 
                      }
 
                  }, 1000, 2000, TimeUnit.MILLISECONDS);
 
    }
 
}

4.newSingleThreadExecutor

單個線程的線程池,即線程池中每次只有一個線程工作,單線程串行執行任務。

public class MyThread extends Thread {
 
    @Override
 
    public void run() {
 
        System.out.println(Thread.currentThread().getName() + "正在執行。。。");
 
    }
 
}

上述內容就是java中線程池創建的方式有哪些,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴忠市| 介休市| 始兴县| 包头市| 博兴县| 中阳县| 兴海县| 宝丰县| 龙川县| 鄂托克前旗| 广元市| 巴东县| 恩施市| 滦南县| 蓬溪县| 游戏| 孟津县| 盐源县| 广昌县| 彩票| 大渡口区| 汝州市| 乌海市| 凤冈县| 金堂县| 新沂市| 彭水| 长春市| 新安县| 汶川县| 勃利县| 龙州县| 张家界市| 望城县| 南皮县| 安平县| 古田县| 上饶市| 沾化县| 正宁县| 台山市|