mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
40 lines
1.3 KiB
Java
40 lines
1.3 KiB
Java
package threadPoolExecutor;
|
||
|
||
import java.util.concurrent.ArrayBlockingQueue;
|
||
import java.util.concurrent.ThreadPoolExecutor;
|
||
import java.util.concurrent.TimeUnit;
|
||
|
||
import static common.ThreadPoolConstants.CORE_POOL_SIZE;
|
||
import static common.ThreadPoolConstants.KEEP_ALIVE_TIME;
|
||
import static common.ThreadPoolConstants.MAX_POOL_SIZE;
|
||
import static common.ThreadPoolConstants.QUEUE_CAPACITY;
|
||
|
||
|
||
public class ThreadPoolExecutorDemo {
|
||
|
||
public static void main(String[] args) {
|
||
|
||
//使用阿里巴巴推荐的创建线程池的方式
|
||
//通过ThreadPoolExecutor构造函数自定义参数创建
|
||
ThreadPoolExecutor executor = new ThreadPoolExecutor(
|
||
CORE_POOL_SIZE,
|
||
MAX_POOL_SIZE,
|
||
KEEP_ALIVE_TIME,
|
||
TimeUnit.SECONDS,
|
||
new ArrayBlockingQueue<>(QUEUE_CAPACITY),
|
||
new ThreadPoolExecutor.CallerRunsPolicy());
|
||
|
||
for (int i = 0; i < 10; i++) {
|
||
//创建WorkerThread对象(WorkerThread类实现了Runnable 接口)
|
||
Runnable worker = new MyRunnable("" + i);
|
||
//执行Runnable
|
||
executor.execute(worker);
|
||
}
|
||
//终止线程池
|
||
executor.shutdown();
|
||
while (!executor.isTerminated()) {
|
||
}
|
||
System.out.println("Finished all threads");
|
||
}
|
||
}
|