当前位置: 首页 > 面试题库 >

Executors.newFixedThreadPool(1)和Executors.newSingleThreadExecutor()之间的区别

范浩荡
2023-03-14
问题内容

我的问题是:使用有意义吗Executors.newFixedThreadPool(1)???在两个线程(main +
oneAnotherThread)中,使用执行程序服务效率高吗?是否通过调用new Runnable(){ }比使用ExecutorService更好地直接创建新线程?在这种情况下使用ExecutorService有什么好处和坏处?

PS:主线程和oneAnotherThread不访问任何公共资源。

我经历了:使用ExecutorService有什么优势?。一次只能有一个线程!


问题答案:

使用有意义Executors.newFixedThreadPool(1)吗?

它与a本质上是相同的,Executors.newSingleThreadExecutor()不同之处在于后者是不可重新配置的(如javadoc所示),而前者是将其转换为ThreadPoolExecutor

在两个线程(main + oneAnotherThread)中,使用执行程序服务效率高吗?

执行程序服务是围绕线程的非常薄的包装器,可显着促进线程生命周期管理。如果您只需要new Thread(runnable).start();继续前进,那么就不需要ExecutorService了。

在任何现实生活中,都有可能监视任务的生命周期(通过返回的Futures),执行者将在未捕获的异常情况下根据需要重新创建线程的事实,回收线程与创建新的解决方案等,使执行者服务成为功能更强大的解决方案,而无需支付额外的费用。

底线:使用执行程序服务和线程相比,我看不到任何不利之处。

Executors.newSingleThreadExecutor()。execute(command)和new
Thread(command).start();之间的区别


经历了两个选项之间行为上的细微差异。



 类似资料:
  • 问题内容: 好标题说,和之间有什么区别 问题答案: 行为上,几乎没有。 但是,一旦有了一个实例,就可以向它提交多个任务,并使它们一个接一个地执行。您不能仅仅使用raw来做到这一点。

  • 问题内容: 在mdn 与…相同 。 但是,实际上它在浏览器中有不同的显示。 您可以通过更改CSS中的注释在jsFiddle中进行尝试。 当我使用元素时,其类名将是,但使用时不会发生。 我不明白为什么。寻求帮助。非常感谢。 问题答案: 该 属性是设置的简写: 该规则应对此进行计算: 这些值在规范中定义。参见7.1.1节。的基本价值 我之所以说 “应该计算” ,是因为在IE11和可能的其他浏览器中,度

  • 我想知道Executors类的这两种方法有什么区别?我有一个web应用程序,我每100毫秒检查一些数据,所以这就是为什么我使用这个带有scheduleWithFixedDelay方法的调度器。我想知道在这种情况下应该使用哪种方法(newScheduledThreadPool还是newSingleThreadScheduledExecutor)?我还有一个问题--在监视Glassfish服务器的Vi

  • 本文向大家介绍Hadoop 1和Hadoop 2之间的区别,包括了Hadoop 1和Hadoop 2之间的区别的使用技巧和注意事项,需要的朋友参考一下 我们知道,为了维护大数据并以不同的方式从此数据获取相应的报告,我们使用了Hadoop,它是Apache Software Foundation基于Java编程语言的开源框架。 现在,Apache引入了名为Hadoop 2的下一个Hadoop版本,因

  • 问题内容: 和Python和有什么不一样? 我尝试环顾四周,但没有在这些线上找到具体问题。如果已经回答,则链接就足够了。 问题答案: 0和1是退出代码。 意味着干净出口,没有任何错误/问题 表示存在一些问题/错误/问题,这就是程序退出的原因。 这不是特定于Python的,非常普遍。非零退出代码被视为异常退出,有时,错误代码指示问题所在。错误代码为零表示成功退出。 这对于其他程序,shell,调用方

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子: