我正在尝试重构多线程异步应用程序。每次应用程序启动特定事件(它们是从外部设备生成)时,我都会有一个类,它会启动一个新线程并注册该事件。之后在另一个类中,我启动一个处理事件的新线程,然后关闭两个线程。 我想重构这个因为如果引发100个不同的事件,我将有100个不同的线程(并且应用程序将在嵌入式PC中运行,如raspberry pi或marsboard)。 所以我找到了两种尝试解决问题的方法:
还有其他方法可以解决这个问题吗?
答案 0 :(得分:4)
结合两种解决方案。
使用线程池,如果没有空闲线程,则开始排队请求。
这就是应用服务器解决此问题的方式。
答案 1 :(得分:1)
使用无限数量的线程确实是一个糟糕的主意,
您可以改用ThreadPoolExecutor
和BlockingQueue
。 ThreadPoolExecutor
有一个构造函数,它带有BlockingQueue
。
由于您提到了重构,请尝试从线程使用的代码中删除可变性。 尝试使所有类型疯狂不可变,如果不可能隐藏可变性。这将为免费提供线程安全