Ich verwende einen Thread-Pool, der in der Lage sein sollte, Hunderte von gleichzeitigen Aufgaben auszuführen. Die Aufgaben führen jedoch in der Regel nur sehr wenige Berechnungen durch und verbringen die meiste Zeit damit, auf eine Serverantwort zu warten. Wenn der Thread-Pool also Hunderte von Threads enthält, sind nur einige davon aktiv, während die meisten warten.
Ich weiß, im Allgemeinen ist dies keine gute Praxis für Thread-Pools verwenden, aber das aktuelle Design erlaubt nicht meine Aufgaben asynchron zu machen, so dass Sie die Kontrolle zurückgeben können, ohne auf die Antwort des Servers zu warten. Angesichts dieser Einschränkung ist mein größtes Problem wohl der erhöhte Speicherverbrauch für den Stapelplatz der Threads.
Gibt es also eine Möglichkeit, eine Art von leichtgewichtigen Threads zu verwenden, die nicht viel Speicher verbrauchen?
Ich jetzt gibt es eine JVM-Option -Xss, um den Stapelspeicher zu steuern, aber es scheint, es gibt keine Möglichkeit, diese pro Thread-Pool oder Thread nur im Gegensatz zu ändern Sie es für alle Threads innerhalb der VM zu steuern, richtig?
Haben Sie auch Vorschläge für eine bessere Lösung für mein Problem?