我得到了这段代码:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
OctopusWSClient.sendPoolSensorReading(poolSensorReading, OctopusClientStart.currentMacAddress);
}
});
thread.setName("Thread - WS");
thread.start();
在大约每 30 秒执行一次的事件监听器中(当事件发生时),因此每 30 秒创建一个新线程,通常持续 20 秒才能完成,现在,我的问题是......可以以这种方式调用线程?如果不是,如何???...而且,我正在使用此代码查看线程 ID 和名称:
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for(Thread t : threadSet){
System.out.println(" Thread #"+t.getId()+" Name: "+t.getName());
}
它会打印当前线程的 ID 和名称,我总是看到相同数量的线程,但 ID 总是递增 1(线程 - WS)。
这是一个坏信号吗?它会在一段时间内填满 JVM 内存吗?
谢谢
最佳答案
您可能会发现通知单个线程恢复比创建多个线程更好。如果需要 20 秒才能完成,最后锁定它并让它等待,直到它从事件监听器获得重新启动循环的命令。
关于Java - 在 EventListener 中创建线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737541/