What 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.
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.
②AbortPolicy
Under this policy, the task is directly discarded and a RejectedExecutionException is thrown.
③DiscardPolicy
Under this policy, the task is discarded directly and nothing is done.
④DiscardOldestPolicy
Under this policy, discard the earliest task that entered the queue, and then try to put the rejected task into the queue
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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

In this article, we have kept the most asked Java Spring Interview Questions with their detailed answers. So that you can crack the interview.

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

Guide to TimeStamp to Date in Java. Here we also discuss the introduction and how to convert timestamp to date in java along with examples.

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

Java is a popular programming language that can be learned by both beginners and experienced developers. This tutorial starts with basic concepts and progresses through advanced topics. After installing the Java Development Kit, you can practice programming by creating a simple "Hello, World!" program. After you understand the code, use the command prompt to compile and run the program, and "Hello, World!" will be output on the console. Learning Java starts your programming journey, and as your mastery deepens, you can create more complex applications.
