In diesem Artikel werden hauptsächlich relevante Informationen für ein detailliertes Verständnis der Parameter von Java ThreadPoolExecutor vorgestellt. Freunde, die diese benötigen, können sich auf
Detaillierte Informationen zu den Parametern von Java ThreadPoolExecutor beziehen
1. Verwenden Sie Executors, um einen Thread-Pool zu erstellen. Natürlich verwenden Executors auch andere Parameter als new ThreadPoolExecutor
1. newFixedThreadPool()
Erstellen Sie einen Thread-Pool mit einer festen Anzahl von Threads. Da LinkedBlockingQueue verwendet wird, ist MaximumPoolSize nutzlos. Wenn corePoolSize voll ist, wird es zur LinkedBlockingQueueWarteschlange hinzugefügt. Immer wenn ein Thread die Ausführung abschließt, nehmen Sie einen Thread aus der LinkedBlockingQueue-Warteschlange. Dadurch wird also ein Thread-Pool mit fester Größe erstellt.
public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); } public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
3.newCachedThreadPool()
public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>())); }
2. Verwenden Sie ThreadPoolExecutor, um einen Thread-Pool zu erstellen
public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); } public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
-Konstruktor
Parameter: 1. corePoolSize Die Anzahl der Threads Aufgabenausführungssequenz: 2. Wenn die Anzahl der Threads größer oder gleich corePoolSize ist und die workQueue nicht voll ist, legen Sie sie in die workQueue ThreadPoolExecutor verfügt standardmäßig über vier Ablehnungsrichtlinien: eine Ausnahme RejectedExecutionException 3. ThreadPoolExecutor.DiscardPolicy() Nachfolgende Aufgaben direkt verwerfen RejectedExecutionHandler erben, um die Ablehnungsstrategie Das obige ist der detaillierte Inhalt vonBeispielcodeanalyse für ein detailliertes Verständnis der Java ThreadPoolExecutor-Parameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website! public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
if (corePoolSize < 0 ||
maximumPoolSize <= 0 ||
maximumPoolSize < corePoolSize ||
keepAliveTime < 0)
throw new IllegalArgumentException();
if (workQueue == null || threadFactory == null || handler == null)
throw new NullPointerException();
this.corePoolSize = corePoolSize;
this.maximumPoolSize = maximumPoolSize;
this.workQueue = workQueue;
this.keepAliveTime = unit.toNanos(keepAliveTime);
this.threadFactory = threadFactory;
this.handler = handler;
}