创建自定义线程池, 并在执行完将线程回收的两种方式
Posted Peter-OK
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建自定义线程池, 并在执行完将线程回收的两种方式相关的知识,希望对你有一定的参考价值。
private int final DOWNLOAD_THREAD_SIZE=5;
...
// 创建自定义线程池, 并在执行完将线程回收, 方式一
ThreadPoolExecutor executor = new ThreadPoolExecutor(DOWNLOAD_THREAD_SIZE,
DOWNLOAD_THREAD_SIZE + 1, 1, TimeUnit.SECONDS, new LinkedBlockingQueue());
// 在allowCoreThreadTimeOut设置为true时,ThreadPoolExecutor的keepAliveTime参数必须大于0
executor.allowCoreThreadTimeOut(true);
executor.execute(new DownloadTaskThread(id, "downloadTaskThread-" + i));
// 创建自定义线程池, 并在执行完将线程回收, 方式二
ThreadPoolExecutor executor = new ThreadPoolExecutor(DOWNLOAD_THREAD_SIZE,
DOWNLOAD_THREAD_SIZE + 1, 1, TimeUnit.SECONDS, new LinkedBlockingQueue());
executor.execute(new DownloadTaskThread(id, "downloadTaskThread-" + i));
// 在任务执行完后,调用shutdown方法,将线程池中的空闲线程回收。该方法会使得keepAliveTime参数失效。
executor.shutdown();
以上是关于创建自定义线程池, 并在执行完将线程回收的两种方式的主要内容,如果未能解决你的问题,请参考以下文章