java多线程之线程池

发布时间:2017-7-1 11:28:37编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"java多线程之线程池 ",主要涉及到java多线程之线程池 方面的内容,对于java多线程之线程池 感兴趣的同学可以参考一下。

 数据库连接池类似,线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象或Callable对象传给线程池,线程池就会启动一个线程来执行它们的run()或call()方法,当执行完毕后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。

  • Executors工厂类:该工厂类包含多个静态工厂方法来创建线程池。 
    ① newCachedThreadPool():创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中。 
    ② newFixedThreadPool(int nThreads):创建一个可重用的、具有固定线程数的线程池 
    ③ newScheduledThreadPool(int corePoolSize):创建具有指定线程数的线程池,它可以在指定延迟后执行线程任务。 
    ④ newWorkStealingPool(int parallelism):创建持有足够的线程的线程池来支持给定的并行级别,该方法还会使用多个队列来减少竞争。
  • ExecutorService类:代表尽执行线程的线程池,即只要线程池中有空闲线程,就立即执行线程任务
  • ScheduledExecutorService类:代表可在指定延迟后或周期性地执行线程任务的线程池。

使用线程池来执行线程任务的步骤如下:

    1. 调用Executors类的静态工厂方法创建一个ExecutorService对象,该对象代表一个线程池
    2. 创建Runnable实现类或Callable实现类的实例,作为线程执行任务
    3. 调用ExecutorService对象的submit()方法来提交Runnable实例或Callable实例
    4. 当不想提交任何任务时,调用ExecutorService对象的shutdown()方法来关闭线程

例子:

package com.ming.thread.six.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中。
 * @author ming
 *
 */
public class CachedThreadPoolTest {

    public static void main(String[] args) {
        ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
        for (int i = 0; i < 10; i++) {
            final int index = i;
            try {
                Thread.sleep(index * 1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            cachedThreadPool.execute(new Runnable() {
                public void run() {
                    System.out.println(index);
                }


上一篇:《Inside C#》笔记(七) Attribute
下一篇:jexus配置支持Owin

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款