创建自定义线程池, 并在执行完将线程回收的两种方式

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();

 

以上是关于创建自定义线程池, 并在执行完将线程回收的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

Java开启异步的两种方式

wee4(毕老师)

Java ExecutorService四种线程池及自定义ThreadPoolExecutor机制

11_线程池

11_线程池

创建线程的两种方法