A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© t_mac 黑马帝   /  2011-12-28 13:58  /  3354 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Executors创建线程池的newSingleThreadExecutor(ThreadFactory threadFactory)方法与newFixedThreadPool(1, threadFactory)有什么不同?

4 个回复

正序浏览
t_mac 黑马帝 2011-12-29 10:00:15
报纸
颜宗茂 发表于 2011-12-28 23:03
这个也还不是太理解呵呵。

:(         
回复 使用道具 举报
这个也还不是太理解呵呵。
回复 使用道具 举报
public static ExecutorService newSingleThreadExecutor()
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。
可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。
newSingleThreadExecutor返回的ExcutorService在析构函数finalize()会调用shutdown(),即如果我们没有对它调用shutdown(),那么可以确保它在被回收时调用shutdown()来终止线程。



public static ExecutorService newFixedThreadPool(int nThreads,ThreadFactory threadFactory)
    创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。
    参数:
        nThreads - 池中的线程数
        threadFactory - 创建新线程时使用的工厂
    返回:
        新创建的线程池
    抛出:
        NullPointerException - 如果 threadFactory 为 null
        IllegalArgumentException - 如果 nThreads <= 0
回复 使用道具 举报
public static ExecutorService newSingleThreadExecutor()
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。
可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。
newSingleThreadExecutor返回的ExcutorService在析构函数finalize()会调用shutdown(),即如果我们没有对它调用shutdown(),那么可以确保它在被回收时调用shutdown()来终止线程。


public static ExecutorService newFixedThreadPool(int nThreads,ThreadFactory threadFactory)
    创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。在任意点,在大多数 nThreads 线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附加任务,则在有可用线程之前,附加任务将在队列中等待。如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式地关闭之前,池中的线程将一直存在。
    参数:
        nThreads - 池中的线程数
        threadFactory - 创建新线程时使用的工厂
    返回:
        新创建的线程池
    抛出:
        NullPointerException - 如果 threadFactory 为 null
        IllegalArgumentException - 如果 nThreads <= 0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马