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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孔肖 中级黑马   /  2012-9-7 10:42  /  1721 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孔肖 于 2012-9-7 14:10 编辑

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

3 个回复

正序浏览
佟亚鹏 发表于 2012-9-7 11:05
Executors这个类是个线程工具类,它提供对Executor、ExecutorService、ScheduledExecutorService、ThreadFa ...

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

从Thread类继承,也可以启动多个线程的,与实现Runnable接口并创建线程的方式一样的,只要将继承Thread类的子类实例化后,再将这个子类的对象放入Thread类的构造方法里即可.
回复 使用道具 举报
Executors这个类是个线程工具类,它提供对Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的一些实用方法。
此类支持以下各种方法:
    * 创建并返回设置有常用配置的ExecutorService的方法。
    * 创建并返回设置有常用配置的ScheduledExecutorService 的方法。
    * 创建并返回“包装的”ExecutorService 方法,它使特定于实现的方法不可访问,只让ExecutorService接口的方法可用。
    * 创建并返回 ThreadFactory 的方法,它可将新创建的线程设置为已知的状态。
    * 创建并返回非闭包形式的 Callable 的方法,这样可将其用于需要 Callable 的执行方法中。

而我们从Thread继承,以及实现Runable接口,可以直接启动一个线程,从Thread继承只能启动一个线程,实现Runable接口可以启动多个线程。
条条大路通罗马,每种启动线程的方式都有其利弊,不要拘泥于一种方式,那种适合用那种。。。。
回复 使用道具 举报
本帖最后由 武庆东 于 2012-9-7 11:21 编辑


public class Executorsextends Object此包中所定义的 ExecutorExecutorServiceScheduledExecutorServiceThreadFactoryCallable 类的工厂和实用方法。此类支持以下各种方法:
  • 创建并返回设置有常用配置字符串的 ExecutorService 的方法。
  • 创建并返回设置有常用配置字符串的 ScheduledExecutorService 的方法。
  • 创建并返回“包装的”ExecutorService 方法,它通过使特定于实现的方法不可访问来禁用重新配置。
  • 创建并返回 ThreadFactory 的方法,它可将新创建的线程设置为已知的状态。
  • 创建并返回非闭包形式的 Callable 的方法,这样可将其用于需要 Callable 的执行方法中。

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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马