Verfügt DeferredResult über eine Racebedingung, wenn eine möglicherweise bereits festgelegte Instanz zurückgegeben wird?Java

Java-Forum
Anonymous
 Verfügt DeferredResult über eine Racebedingung, wenn eine möglicherweise bereits festgelegte Instanz zurückgegeben wird?

Post by Anonymous »

Ich verwende DeferredResult in meiner Spring MVC-Anwendung, um eine serverseitige Verarbeitung einer möglicherweise lang andauernden Aktion durchzuführen. Es kann sehr schnell sein oder ein oder zwei Sekunden dauern.

Aber in beiden Fällen führt die eingehende HTTP-Anfrage dazu, dass eine Aktion in eine Warteschlange verschoben wird, für deren Verarbeitung ein separater Thread (über einen ExecutorService) verantwortlich ist. Anschließend wird ein Rückruf aufgerufen, der den Pusher darüber informiert, dass der Vorgang abgeschlossen ist.

Ich habe einige dieser Verhaltensweisen in eine Dienstprogrammmethode umgestaltet:

Code: Select all

    public static DeferredResult toResponse(GameManager gameManager, final Player player, Action action) {
DeferredResult deferredResult = new DeferredResult();
gameManager.execute(action, new Handler() {
@Override
public void handle(Result result) {
JSONObject obj;
try {
obj = gameManager.getGameJSON(player);
obj.put("success", result.getResult());
obj.put("message", result.getMessage());
deferredResult.setResult(obj.toString());  // POINT B
} catch (JSONException e) {
deferredResult.setErrorResult(e);
}
}
});
return deferredResult; // POINT A
}
Aber ich frage mich, was passiert, wenn die Ausführung der Aktion so schnell erfolgt, dass die Methode setResult() aufgerufen wird (

Code: Select all

POINT B
) auf dem DeferredResult bevor es zurückgegeben wurde (

Code: Select all

POINT A
) an die aufrufende Methode.

Wird Spring sehen, dass das zurückgegebene DeferredResult bereits einen Wert hat und ihn verarbeiten, oder beginnt es erst mit der „Überwachung“, bis der Setter aufgerufen wird, nachdem die Instanz bereitgestellt wurde?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post