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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘿嘿小学徒 中级黑马   /  2012-12-31 17:10  /  1736 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高一航 于 2013-1-1 12:24 编辑

请帮我解释下这行代码的作用:
  1. ExecutorService pool=Executors.newSingleThreadExecutor();
复制代码
这和一般的两种创建线程有什么关系..?  谢谢大家回答..

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
一般线程创建的是本线程的对象,这个代码创建的是单例模式的对象。我是这样认为。
回复 使用道具 举报
系统启用一个新线程的成本较高,因其涉及到与操作系统的交互。使用这种线程池能提高性能。
开始线程池中有大量空闲线程,返回的ExecutorService表示尽快执行线程的线程池,程序只要将一个Runnable对象提交给该线程池,它就会尽快执行。
我感觉主要是为了性能的考虑,还是jdk1.5的新特性

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
 ExecutorService pool = Executors.newSingleThreadExecutor();
是单任务线程池。另外其他创建java线程池方式还有:
1、固定大小线程池

  import java.util.concurrent.Executors;
  import java.util.concurrent.ExecutorService;

  ExecutorService pool = Executors.newFixedThreadPool(2);

  pool.execute(t1);

  pool.shutdown();

2、单任务线程池

  ExecutorService pool = Executors.newSingleThreadExecutor();

3、可变尺寸线程池

  ExecutorService pool = Executors.newCachedThreadPool();

4、延迟连接池

  import java.util.concurrent.Executors;
  import java.util.concurrent.ScheduledExecutorService;
  import java.util.concurrent.TimeUnit;

  ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);

  pool.schedule(t4, 10, TimeUnit.MILLISECONDS);

5、单任务延迟连接池

  ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
个人理解啊,这行代码的意思是:

创建一个线程池,里面只有一个线程,当有任务需要执行时,交给线程池去执行。
这是1.5的新特性,是为了提高性能用的。系统用原来的创建线程方式开销一般是很大的。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
这事创建一个线程池,当线程运行时,程序会将线程交给线程池中空闲的一个线程

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

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