91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java threadpoolexecutor如何設置拒絕策略

小樊
82
2024-11-16 23:22:54
欄目: 編程語言

在Java中,ThreadPoolExecutor提供了四種內置的拒絕策略,分別是:

  1. AbortPolicy(默認策略):當提交的任務無法被接受執行時,會直接拋出RejectedExecutionException異常。
  2. CallerRunsPolicy:當提交的任務無法被接受執行時,直接在調用者線程中運行該任務。
  3. DiscardPolicy:當提交的任務無法被接受執行時,直接丟棄該任務,不拋出異常也不進行任何處理。
  4. DiscardOldestPolicy:當提交的任務無法被接受執行時,丟棄隊列中最舊的任務,然后嘗試重新提交當前任務。

要設置拒絕策略,需要創建一個ThreadPoolExecutor實例,并在構造函數中傳入相應的策略。以下是一個使用CallerRunsPolicy拒絕策略的示例:

import java.util.concurrent.*;

public class ThreadPoolExample {
    public static void main(String[] args) {
        int corePoolSize = 2;
        int maximumPoolSize = 4;
        long keepAliveTime = 10L;
        TimeUnit unit = TimeUnit.SECONDS;
        BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(3);

        // 設置拒絕策略為 CallerRunsPolicy
        RejectedExecutionHandler rejectionPolicy = new CallerRunsPolicy();

        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
                corePoolSize,
                maximumPoolSize,
                keepAliveTime,
                unit,
                workQueue,
                rejectionPolicy
        );

        for (int i = 0; i < 10; i++) {
            int finalI = i;
            threadPoolExecutor.submit(() -> {
                System.out.println("Task " + finalI + " is running on thread " + Thread.currentThread().getName());
            });
        }

        threadPoolExecutor.shutdown();
    }
}

在這個示例中,我們創建了一個ThreadPoolExecutor實例,并設置了CallerRunsPolicy作為拒絕策略。然后我們提交了10個任務到線程池中,當任務數量超過線程池的處理能力時,將會使用CallerRunsPolicy策略處理無法被接受的任務。

0
杭锦后旗| 英德市| 丽江市| 连平县| 凤翔县| 澄城县| 班戈县| 志丹县| 岑溪市| 桐柏县| 龙里县| 昭平县| 怀远县| 瑞丽市| 太湖县| 天柱县| 昔阳县| 白河县| 中超| 渝中区| 蒙阴县| 霍城县| 新郑市| 安塞县| 赞皇县| 绥芬河市| 阳山县| 沅陵县| 澄江县| 清镇市| 个旧市| 潮安县| 庐江县| 寻乌县| 石城县| 乌审旗| 深水埗区| 永州市| 朔州市| 福贡县| 达拉特旗|