Java-Cache-Objekt gibt den alten Wert zurück

8

Ich habe Cache-Liste, mein Code sieht so aus

%Vor%

Da das Laden der Liste sehr schwer ist, habe ich eine Anfrage bekommen, dass wenn "list load" gerade läuft, ich "alte" zwischengespeicherte Daten zurückgebe ...

Ist das möglich, und kann mir jemand Hinweise geben, wie ich von hier aus vorgehen soll?

BEARBEITEN: Adam Horvath Und bayou.io hat so etwas aufgenommen

%Vor%

Hat dieser bearbeitete Code irgendwelche Probleme? Da ich keine Erfahrung mit Multithreading und / oder Cash-Optimierung habe, würde ich mich über jeden Leistungsvorschlag freuen.

    
John 09.07.2015, 13:42
quelle

1 Antwort

2

"Da das Laden der Liste sehr schwer ist, habe ich eine Anfrage erhalten, dass, wenn die Liste gerade geladen wird, ich" alte "zwischengespeicherte Daten zurückgebe ..."

Dies wird aufgrund Ihres "synchronisierten (Cache)" - Blocks nicht passieren. Sie benötigen ein flüchtiges boolesches Flag (Mutex), um Ihnen mitzuteilen, dass eine Liste generiert wird. Wenn ein Thread versucht, list () zu erhalten, und Mutex true ist, erhält er den Cache. Setzen Sie es auf "false", wenn loadMyList () abgeschlossen ist.

Entfernen Sie den synchronisierten Block und laden Sie Ihre Liste in einen separaten Thread.

%Vor%     
Adam Horvath 09.07.2015 14:10
quelle

Tags und Links