Java 您是否应该始终使用ExecutorService而不是启动自己的线程?
在JDK>=1.5的情况下,启动线程的首选方式应该始终是Executor还是Executor服务,或者如果您不需要Executor服务提供的内容,是否仍然有理由选择使用thread.start 对于syncronized,我曾经认为使用新的锁实现是首选,直到我。所以我对遗嘱执行人也有同样的想法。它们只是处理更复杂案件的一种方式,还是应该成为标准选择?至少在第6.2节中明确指出: Java类库中任务执行的主要抽象不是Java 您是否应该始终使用ExecutorService而不是启动自己的线程?,java,multithreading,Java,Multithreading,在JDK>=1.5的情况下,启动线程的首选方式应该始终是Executor还是Executor服务,或者如果您不需要Executor服务提供的内容,是否仍然有理由选择使用thread.start 对于syncronized,我曾经认为使用新的锁实现是首选,直到我。所以我对遗嘱执行人也有同样的想法。它们只是处理更复杂案件的一种方式,还是应该成为标准选择?至少在第6.2节中明确指出: Java类库中任务执行的主要抽象不是Thread,而是Executor。[……] 使用执行器通常是在应用程序中实现生产
Thread
,而是Executor
。[……]
使用执行器通常是在应用程序中实现生产者-消费者设计的最简单方法
就我个人而言,自Java5以来,我完全没有使用
Thread
和ThreadGroup
,因为它们提供的定制和功能比ExecutorService
少得多
使用
ExecutorService
时,我知道我可以使用Callable
,我知道我可以(稍微增加一点开销)安排重复的任务。因此,我认为“代码<线程> <代码>对象禁止代码,如<代码>向量< /代码>和<代码>哈希表是直接的。 编写正确的多线程代码是非常困难的。Executor框架的美妙之处在于,它实现了开发人员将遇到的大部分繁重任务,并且只需要实现可调用或Future,并对java.util.concurrent API进行编程。由于正确管理线程的复杂性,IMHO可以产生更可读的代码,并且错误地实现它的机会更少。这两个答案都很好,但我必须给出一个公认的答案,与Vector和Hashtable进行比较。