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

我试图理解反应堆模式(并发),但在许多例子中,他们谈论的是“工作线程”。什么是工作线程?它们在哪些方面与“正常”线程不同?它们在反应堆模式中的作用是什么?


答案 1

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

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

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

对于实现,请查看线程池


答案 2

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

我假设您正在谈论线程池上的类似以下文档的内容:

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

工作线程是普通线程,但它们与它们所处理的类分开存在。如果扩展或构造 带有参数的 a,则任务将直接绑定到对象。RunnableCallableThreadThreadRunnableThread

使用(或其他类似方法)创建线程池时,将创建一个包含 10 个线程的池,这些线程可以运行提交到池的任意数量的不同线程或类。在盖子下面,由于它们的包装方式,它们仍然更加灵活。Executors.newFixedThreadPool(10);RunnableCallableThread

反应器模式而言,不同类型的事件由类似的处理程序线程运行。线程不绑定到单个事件类,而是在发生任意数量的不同事件时运行这些事件。


推荐