黑马程序员技术交流社区

标题: 关于Executor的问题,搞不懂... [打印本页]

作者: 嘿嘿小学徒    时间: 2012-12-31 17:10
标题: 关于Executor的问题,搞不懂...
本帖最后由 高一航 于 2013-1-1 12:24 编辑

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


作者: 何创    时间: 2012-12-31 17:22
一般线程创建的是本线程的对象,这个代码创建的是单例模式的对象。我是这样认为。
作者: 马志军    时间: 2012-12-31 17:27
系统启用一个新线程的成本较高,因其涉及到与操作系统的交互。使用这种线程池能提高性能。
开始线程池中有大量空闲线程,返回的ExecutorService表示尽快执行线程的线程池,程序只要将一个Runnable对象提交给该线程池,它就会尽快执行。
我感觉主要是为了性能的考虑,还是jdk1.5的新特性
作者: 张会文    时间: 2012-12-31 19:56
 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();


作者: 冉世友    时间: 2012-12-31 22:10
个人理解啊,这行代码的意思是:

创建一个线程池,里面只有一个线程,当有任务需要执行时,交给线程池去执行。
这是1.5的新特性,是为了提高性能用的。系统用原来的创建线程方式开销一般是很大的。
作者: 郝福明    时间: 2013-1-1 10:13
这事创建一个线程池,当线程运行时,程序会将线程交给线程池中空闲的一个线程




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