search
HomeJavajavaTutorialWhat is the meaning of Java thread pool parameters

Thread pool technology is often used in java multi-thread development. This article is a detailed explanation of the seven parameters when creating a java thread pool.

What is the meaning of Java thread pool parameters

As can be seen from the source code, the constructor of the thread pool has 7 parameters

These 7 parameters are:

  • corePoolSize: Number of core threads.

  • maximumPoolSize: Maximum number of threads.

  • keepAliveTime: idle thread survival time.

  • TimeUnit: time unit.

  • BlockingQueue: Thread pool task queue.

  • ThreadFactory: Factory for creating threads.

  • RejectedExecutionHandler: Rejection strategy.

These 7 parameters will be explained one by one below.

1. corePoolSize Thread pool core thread size

The thread pool will maintain a minimum number of threads. Even if these threads handle the idle state, they will not be destroyed unless allowCoreThreadTimeOut is set. The minimum number of threads here is corePoolSize.

2. maximumPoolSize The maximum number of threads in the thread pool

After a task is submitted to the thread pool, it will first find out if there are any idle surviving threads. If there are, the task will be directly handed over to the idle thread. Execution, if not, it will be cached in the work queue (will be introduced later). If the work queue is full, a new thread will be created, and then a task will be taken out from the head of the work queue and handed over to the new thread for processing. Submitted tasks are placed at the end of the work queue. The thread pool will not create new threads without limit. It will have a limit on the maximum number of threads, which is specified by maximumPoolSize.

3. keepAliveTime idle thread survival time

If a thread is idle and the current number of threads is greater than corePoolSize, then after the specified time, the idle thread will be destroyed, as specified here The time is set by keepAliveTime

4. Unit idle thread survival time unit

The measurement unit of keepAliveTime

5. workQueue work queue

The new task is After submission, it will first enter the work queue, and then the task will be taken out from the queue during task scheduling. There are four work queues provided in jdk:

①ArrayBlockingQueue

Array-based bounded blocking queue, sorted by FIFO. After a new task comes in, it will be placed at the end of the queue. The bounded array can prevent resource exhaustion problems. When the number of threads in the thread pool reaches corePoolSize and a new task comes in, the task will be placed at the end of the queue, waiting to be scheduled. If the queue is already full, a new thread is created. If the number of threads has reached maxPoolSize, the rejection policy will be executed.

②LinkedBlockingQuene

Unbounded blocking queue based on linked list (in fact, the maximum capacity is Interger.MAX), sorted according to FIFO. Due to the approximately unbounded nature of the queue, when the number of threads in the thread pool reaches corePoolSize, new tasks will come in and will be stored in the queue without creating new threads until maxPoolSize. Therefore, when using this work queue, the parameter maxPoolSize Actually it doesn't work.

③SynchronousQuene

A blocking queue that does not cache tasks. The producer puts a task in and must wait until the consumer takes out the task. That is to say, when a new task comes in, it will not be cached, but will be directly scheduled to execute the task. If there are no available threads, a new thread will be created. If the number of threads reaches maxPoolSize, a rejection policy will be executed.

④PriorityBlockingQueue

An unbounded blocking queue with priority, the priority is implemented through the parameter Comparator.

6. threadFactory thread factory

The factory used when creating a new thread, can be used to set the thread name, whether it is a daemon thread, etc.

7. handler rejection Strategy

When the tasks in the work queue have reached the maximum limit, and the number of threads in the thread pool has also reached the maximum limit, how to handle if a new task is submitted. The rejection policy here is to solve this problem. JDK provides 4 rejection policies:

①CallerRunsPolicy

Under this policy, the run method of the rejected task is directly executed in the caller thread. , unless the thread pool has been shut down, the task will be abandoned directly.

What is the meaning of Java thread pool parameters

②AbortPolicy

Under this policy, the task is directly discarded and a RejectedExecutionException is thrown.

What is the meaning of Java thread pool parameters

③DiscardPolicy

Under this policy, the task is discarded directly and nothing is done.

What is the meaning of Java thread pool parameters

④DiscardOldestPolicy

Under this policy, discard the earliest task that entered the queue, and then try to put the rejected task into the queue

What is the meaning of Java thread pool parameters

The above is the detailed content of What is the meaning of Java thread pool parameters. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
How does the JVM handle differences in operating system APIs?How does the JVM handle differences in operating system APIs?Apr 27, 2025 am 12:18 AM

JVM handles operating system API differences through JavaNativeInterface (JNI) and Java standard library: 1. JNI allows Java code to call local code and directly interact with the operating system API. 2. The Java standard library provides a unified API, which is internally mapped to different operating system APIs to ensure that the code runs across platforms.

How does the modularity introduced in Java 9 impact platform independence?How does the modularity introduced in Java 9 impact platform independence?Apr 27, 2025 am 12:15 AM

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

What is bytecode, and how does it relate to Java's platform independence?What is bytecode, and how does it relate to Java's platform independence?Apr 27, 2025 am 12:06 AM

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

Why is Java considered a platform-independent language?Why is Java considered a platform-independent language?Apr 27, 2025 am 12:03 AM

JavaachievesplatformindependencethroughtheJavaVirtualMachine(JVM),whichexecutesbytecodeonanydevicewithaJVM.1)Javacodeiscompiledintobytecode.2)TheJVMinterpretsandexecutesthisbytecodeintomachine-specificinstructions,allowingthesamecodetorunondifferentp

How can graphical user interfaces (GUIs) present challenges for platform independence in Java?How can graphical user interfaces (GUIs) present challenges for platform independence in Java?Apr 27, 2025 am 12:02 AM

Platform independence in JavaGUI development faces challenges, but can be dealt with by using Swing, JavaFX, unifying appearance, performance optimization, third-party libraries and cross-platform testing. JavaGUI development relies on AWT and Swing, which aims to provide cross-platform consistency, but the actual effect varies from operating system to operating system. Solutions include: 1) using Swing and JavaFX as GUI toolkits; 2) Unify the appearance through UIManager.setLookAndFeel(); 3) Optimize performance to suit different platforms; 4) using third-party libraries such as ApachePivot or SWT; 5) conduct cross-platform testing to ensure consistency.

What aspects of Java development are platform-dependent?What aspects of Java development are platform-dependent?Apr 26, 2025 am 12:19 AM

Javadevelopmentisnotentirelyplatform-independentduetoseveralfactors.1)JVMvariationsaffectperformanceandbehavioracrossdifferentOS.2)NativelibrariesviaJNIintroduceplatform-specificissues.3)Filepathsandsystempropertiesdifferbetweenplatforms.4)GUIapplica

Are there performance differences when running Java code on different platforms? Why?Are there performance differences when running Java code on different platforms? Why?Apr 26, 2025 am 12:15 AM

Java code will have performance differences when running on different platforms. 1) The implementation and optimization strategies of JVM are different, such as OracleJDK and OpenJDK. 2) The characteristics of the operating system, such as memory management and thread scheduling, will also affect performance. 3) Performance can be improved by selecting the appropriate JVM, adjusting JVM parameters and code optimization.

What are some limitations of Java's platform independence?What are some limitations of Java's platform independence?Apr 26, 2025 am 12:10 AM

Java'splatformindependencehaslimitationsincludingperformanceoverhead,versioncompatibilityissues,challengeswithnativelibraryintegration,platform-specificfeatures,andJVMinstallation/maintenance.Thesefactorscomplicatethe"writeonce,runanywhere"

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!