黑马程序员技术交流社区

标题: 关于Executors的问题 [打印本页]

作者: 孔肖    时间: 2012-9-7 10:42
标题: 关于Executors的问题
本帖最后由 孔肖 于 2012-9-7 14:10 编辑

在张老师的银行业务调度系统中,在创建线程的时候用到了 Executors 类, 用这个方法创建的线程和我们平时用的 继承Thread类 或者 实现Runnable接口 有什么区别?

作者: 武庆东    时间: 2012-9-7 11:00
本帖最后由 武庆东 于 2012-9-7 11:21 编辑

public class Executorsextends Object此包中所定义的 ExecutorExecutorServiceScheduledExecutorServiceThreadFactoryCallable 类的工厂和实用方法。此类支持以下各种方法:

   Executor接口执行已提交的Runnables任务的对象。所接口提供一种将任务提交与每个任务如何运行的机制(包括线程使用的细节、调度等)分离开来的方法啊。通常使用Executor而不是显式地创建线程!并发编程的一种编程方式是把任务拆分为一些列的小的小任务,即Runnable,然后提交给一个Executor执行,Executro.execute(Runnable run)


作者: 佟亚鹏    时间: 2012-9-7 11:05
Executors这个类是个线程工具类,它提供对Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的一些实用方法。
此类支持以下各种方法:
    * 创建并返回设置有常用配置的ExecutorService的方法。
    * 创建并返回设置有常用配置的ScheduledExecutorService 的方法。
    * 创建并返回“包装的”ExecutorService 方法,它使特定于实现的方法不可访问,只让ExecutorService接口的方法可用。
    * 创建并返回 ThreadFactory 的方法,它可将新创建的线程设置为已知的状态。
    * 创建并返回非闭包形式的 Callable 的方法,这样可将其用于需要 Callable 的执行方法中。

而我们从Thread继承,以及实现Runable接口,可以直接启动一个线程,从Thread继承只能启动一个线程,实现Runable接口可以启动多个线程。
条条大路通罗马,每种启动线程的方式都有其利弊,不要拘泥于一种方式,那种适合用那种。。。。

作者: AngieFans85    时间: 2012-9-7 12:17
佟亚鹏 发表于 2012-9-7 11:05
Executors这个类是个线程工具类,它提供对Executor、ExecutorService、ScheduledExecutorService、ThreadFa ...

"从Thread继承只能启动一个线程,实现Runable接口可以启动多个线程"

从Thread类继承,也可以启动多个线程的,与实现Runnable接口并创建线程的方式一样的,只要将继承Thread类的子类实例化后,再将这个子类的对象放入Thread类的构造方法里即可.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2