/ / Java - Erstellen von Threads in einem EventListener - Java, Multithreading, JVM, Runtime

Java - Erstellen von Threads in einem EventListener - java, multithreading, jvm, runtime

Ich habe diesen Code:

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
OctopusWSClient.sendPoolSensorReading(poolSensorReading, OctopusClientStart.currentMacAddress);
}
});
thread.setName("Thread - WS");
thread.start();

Befindet sich in einem Ereignis-Listener, der ausgeführt wirdUngefähr alle 30 Sekunden (wenn ein Ereignis eintritt), wird also alle 30 Sekunden ein neuer Thread erstellt, der normalerweise 20 Sekunden dauert. Meine Frage ist nun ... Es ist in Ordnung, Threads auf diese Weise aufzurufen? Wenn nicht, wie? ?? ... und außerdem schaue ich mir Threads ID und Namen mit diesem Code an:

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for(Thread t : threadSet){
System.out.println(" Thread #"+t.getId()+" Name: "+t.getName());
}

und es druckt die ID und den Namen für die aktuellen Threads, ich sehe immer die gleiche Anzahl von Threads, aber die ID wird immer um 1 erhöht (Thread - WS).

Ist das ein schlechtes Signal? Es wird in einiger Zeit JVM-Speicher füllen?

Vielen Dank

Antworten:

4 für die Antwort № 1

Sie finden es wahrscheinlich besser, a zu benachrichtigeneinzelner Thread, um fortzufahren, anstatt mehrere zu erstellen. Wenn der Vorgang 20 Sekunden dauert, sperren Sie ihn am Ende und warten Sie, bis er den Befehl zum Neustarten der Schleife vom Ereignis-Listener erhält.