我已经在我写的许多应用程序中使用了多线程。在阅读更多内容时,我偶然发现了ThreadPoolExecutors。我不能不区分这两种情况。
我仍然理解的是,当我有一个任务时,我应该使用多线程,我想将一个任务分成多个小任务,以利用CPU并更快地完成工作。当我有一组任务,并且每个任务可以彼此独立运行时,使用ThreadPoolExecutor。
如果我错了,请纠正我。谢谢
发布于 2012-09-23 04:29:02
ThreadPoolExecutor只是一个高级接口,它使您可以在多个线程中运行任务,而不必处理低级Thread API。因此,区分多线程和ThreadPoolExecutor并没有什么实际意义。
ThreadPoolExecutor有很多种风格,但它们中的大多数都允许多个线程并行运行。通常,您将使用Executor Service和Executors工厂。
例如,ExecutorService executor = Executors.newFixedThreadPool(10);将在10个线程中运行您提交的任务。
发布于 2012-09-23 05:19:22
ThreadPoolExecutor是实现多线程的一种方式。它通常在以下情况下使用
Java7有另一个名为ForkJoinPool的内置类,它通常用于Map-Reduce类型操作。例如,可以想象使用ForkJoinPool实现合并排序,方法是在每个分叉点将数组拆分为1/2,等待结果,然后将结果合并在一起。
发布于 2012-09-23 05:17:41
线程池(执行器)是多线程的一种形式,特别是单生产者-多消费者模式的实现,在这种模式中,线程重复地将工作放入队列中,以供一组工作线程执行。它是使用常规线程实现的,并带来了几个好处:
鉴于上述情况,池确实适用于通常相互独立且通常短暂的任务(长I/O操作只会占用池中的线程,而这些线程将无法执行其他任务)。
https://stackoverflow.com/questions/12547381
复制相似问题