2017-08-23 6 views
0

Ich habe eine Anwendung, die Millionen von Ereignissen und sendet die Ereignisse an einen Server und empfängt Futures für jedes Ereignis erzeugt. Um zu verhindern, dass die Anwendung nicht genügend Arbeitsspeicher hat, stelle ich diese Futures in eine ArrayBlockingQueue und diese Warteschlange wird von einem anderen Thread verarbeitet. Meine Anwendung sendet diese Ereignisse schneller, als sie diese Futures verarbeiten können, und daher wird die Anwendung ziemlich verlangsamt.Verarbeitung mehr Futures

Was ist der beste Weg, um diese Futures zu behandeln?

+0

Skalieren Sie es vielleicht? –

Antwort

0

Ohne zu wissen, was Ihre Bedürfnisse in der Anwendung ist es schwierig, die Leistung Spitze vorzuschlagen.

Vielleicht könnten Sie den Verbrauch beschleunigen, wenn Sie mehr als einen Thread über einen festen Thread-Pool mit einer sorgfältig ausgewählten maximalen Thread-Nummer verwenden (ein unbegrenzter Thread-Executor würde Ihre Anwendung ebenfalls verlangsamen).

Eine weitere Möglichkeit, die Struktur der Anwendung zu überdenken. Z.B. Während des Verzehrs der Futures gibt es einen Prozess, der später refaktorisiert werden kann.

Einige Codebeispiel würde dazu beitragen, spezifischere Ratschläge zu geben.