zoukankan      html  css  js  c++  java
  • JDK自带线程池解析

    JDK1.5以后提供了使用线程池的方法,相关类放在java.util.concurrent,java.util.concurrent.atomic,java.util.concurrent.locks包中。经常使用的是java.util.concurrent,存放着在并发编程中很常用的实用工具类

    本文主要分析java.util.concurrent包,常用类的结构图如下:

    Executor接口

    作用:执行已提交的Runnable任务对象,即线程池。

    方法:void execute(Runnable command)在未来某个时间执行给定的命令。该命令可能在新的线程、已入池的线程或者正调用的线程中执行,这由 Executor 实现决定。 

    ExecutorService接口

    作用:继承Executor,提供了管理终止的方法,以及可为跟踪一个或多个异步任务执行状况而生成Future的方法。(Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。)

    两种关闭方法:

    void shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用。

    List<Runnable> shutdownNow()试图停止所有正在执行的活动任务,暂停处理正在等待的任务,并返回等待执行的任务列表。

    简单的说,shutdown使线程池停止接收新任务,shutdownNow停止处理正在执行的任务以及正在等待的任务。

     

    ScheduledExecutorService接口

    作用:丰富了ExecutorService,可以安排在给定的延迟后运行的命令,或定期执行的命令。schedule 方法使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务对象。

    shedule方法:使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务对象。

    ThreadPoolExecutor类

    作用:一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。每个 ThreadPoolExecutor 还维护着一些基本的统计数据,如完成的任务数。

    具体使用例子参考:http://blog.csdn.net/whuqin/archive/2011/07/01/6578470.aspx

    JDK强烈建议使用较为方便的 Executors 工厂方法 Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收)、Executors.newFixedThreadPool(int)(固定大小线程池)和 Executors.newSingleThreadExecutor()(单个后台线程),它们均为大多数使用场景预定义了设置。

    Executors 类

    作用:是一个工厂类,提供了生成多种类型的 Executor方法,使用这些工厂方法可以创建不同类型的线程池。

    方法:有很多工厂方法,举两个如下。

    public static ThreadFactory defaultThreadFactory()返回用于创建新线程的默认线程工厂。

    public static ExecutorService newCachedThreadPool()创建一个可根据需要创建新线程的线程池。调用 execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。

    ThreadFactory接口

    作用:根据需要创建新线程的对象。是最简单得线程池了。

    方法:Thread newThread(Runnable r)构造一个新 Thread。Executors.defaultThreadFactory() 方法提供了更有用的简单实现,即在返回线程前将已创建线程的上下文设置为已知的值。

  • 相关阅读:
    unity fbx 导出动画
    Unity正交模式摄像机与屏幕适配的方法
    unity3d 代码动态添加,修改BoxCollider2D
    Unity3D 移动摇杆处理
    protobuff 编译注意事项
    sendBroadcast无法接收消息可能原因
    FB相关
    上传速度慢
    CocosCreator与Laya2.0区别
    LayaBox 常用技巧
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982079.html
Copyright © 2011-2022 走看看