什么是工作线程,它们在反应器模式中的作用是什么?

问题描述 投票:0回答:2

我试图理解 Reactor 模式(并发),但在许多示例中,他们都在谈论“工作线程”。什么是工作线程?它们与“普通”线程有何不同?它们在反应器模式中的作用是什么?

java multithreading design-patterns reactor
2个回答
40
投票

Reactor 模式 与工作线程一起使用,以克服应用程序中的常见情况:您最终需要做很多工作,但您不知道哪些工作以及何时进行,创建线程是一项昂贵的操作。

这个想法是你创建了很多线程,这些线程一开始什么都不做。相反,他们“等待工作”。当工作到达时(以代码的形式),某种执行服务(反应器)从池中识别空闲线程并分配它们工作。

这样一来,您就可以支付创建所有线程一次的代价(而不是每次都必须完成一些工作)。同时,你的线程是通用的;他们会做任何分配给他们的工作,而不是专门做一些特定的事情。

有关实现,请查看线程池


22
投票

什么是工作线程,它们在反应器模式中的作用是什么?

我假设你在谈论一些东西比如这个关于线程池的文档

java.util.concurrent 中的大多数执行器实现都使用线程池,它由工作线程组成。这种线程独立于它执行的Runnable和Callable任务而存在,常用于执行多个任务。

工作线程是普通线程,但它们与它们工作的

Runnable
Callable
类分开存在。如果你扩展
Thread
或者你构造一个带有
Thread
参数的
Runnable
,任务直接绑定到
Thread
对象。

当您使用

Executors.newFixedThreadPool(10)
(或其他类似方法)创建线程池时,您创建了一个线程池,该线程池可以运行提交给池的任意数量的不同
Runnable
Callable
类。在盖子下面,它们仍然是
Thread
只是因为它们的包裹方式而更加灵活。

反应器模式而言,不同类型的事件由类似的处理程序线程运行。线程不依赖于单个事件类,但会在事件发生时运行任意数量的不同事件。

© www.soinside.com 2019 - 2024. All rights reserved.