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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张豪杰 中级黑马   /  2013-2-27 16:52  /  2249 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张豪杰 于 2013-2-27 21:26 编辑

Executors工具类中的创建的线程与直接new线程有什么区别?
Executor执行已提交的 Runnable 任务的对象。此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节、调度等)分离开来的方法。通常使用 Executor 而不是显式地创建线程。例如,可能会使用以下方法,而不是为一组任务中的每个任务调用 new Thread(new(RunnableTask())).start();
怎么理解?

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

3 个回复

倒序浏览
直接在类中new线程的话那你的这个类是不是得继承 Thread 类啊,java不支持多继承,那你再想对你这个类进行功能扩展时,别的类就不能再继承这个类了,所以直接new线程会使代码的扩展性降低
与他相比, new Thread(new(RunnableTask())).start();这种方法的扩展性会好一点

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
Executor 不是显式地创建线程。并发编程的一种编程方式是把任务拆分为一些列的小任务,即Runnable,然后在提交给一个Executor执行 ,  Executor.execute(Runnalbe)。Executor在执行时使用内部的线程池完成操作。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 鼓励个

查看全部评分

回复 使用道具 举报
Executors线程池的基本思想是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。如果用new Thread的形式,会有性能开销,不方便处理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马