垃圾收集线程太多

Quo*_*ien 3 java multithreading garbage-collection

我正在使用java开发一个软件,它在接收事件(来自传感器)时创建一个线程.这些线程的生存时间非常短(<1秒)
传感器发送最多10个事件/分钟. 这个程序在大多数时间都可以正常工作.但有一段时间它会挂起.
我看看eclipse调试器并发现有很多线程,其中大多数是"Thread[garbage collected]"(大约800个线程@ _ @)

我不知道该bug是否是由我的代码中的动态创建线程或其他错误引起的?

EDIT:
问题确实是由创建太多线程引起的.我已经用时间戳记录了所有传感器的事件,并且它创建了一些点1200 events/minute(该死的!).
我还写了一个小的java程序,它创建了与posible一样多的线程.在~4100th thread(好吧,木制电脑),jvm崩溃了.它不像我的应用程序那样挂起: - ?
因此,我认为动态创建线程时可能存在(可能)罕见的情况并导致垃圾收集线程挂起?

在此输入图像描述

Jes*_*per 11

不要为收到的每个事件创建新线程.而是使用java.util.concurrent包中的类.

创建一个ExecutorService(使用类中的一个静态方法Executors)并将处理事件的作业提交给ExecutorService.这ExecutorService是一个为您管理线程的线程池.

  • 线程池肯定是前进的方式,它们响应更快,并防止由堆栈所需的大量分配导致的本机(脱离Java堆)碎片. (2认同)