tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
373
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Fulk Fulk ist offline Mitglied Bronze
    Registriert seit
    Jan 2008
    Beiträge
    48
    Hi,

    ich habe eine Web-Anwendung, in der im Hintergrund eine DB läuft. Um die Performance zu erhöhen wurde ein
    Cache, mittels HashMaps, für Java Objekte implementiert.
    Die Java-Objekte sind Repräsentanten von Zeilen der Datenbank (bspw. liegen in der Datenbank Kataloge o.ä., die dann durch
    jeweils ein Objekt in der "Javawelt" abgebildet werden).

    Das Problem ist nun, dass auf den Cache mehrere Threads gleichzeitig zugreifen können (typischen und altbekanntes Cache-Problem)
    und somit Inkonsistenzen zwischen DB und Cache entstehen können.

    Die Frage ist nun, wie bekomme ich die Java-Seite threadsicher/synchronisiert. Auf der DB-Seite besteht ja (durch ACID) bereits eine
    Synchronisation von Transaktionen.

    Reicht es aus, einfache mittels "synchronized" die Threads zu synchronisieren? Oder muss noch mehr beachtet werden?

    Danke!
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    1) Caches zu implementieren ist keine triviale Angelegenheit (Concurrency, Invalidation ....) und es gibt bereits massig Implementierungen, die sich umfassend um das Thema kümmern...
    http://java-source.net/open-source/cache-solutions


    2) Wenn du sowas selber baust, dann verwende eine java.util.concurrent.ConcurrentHashMap

    3) Für eine detaillierte Antwort bräuchte man noch ein paar Informationen.
    Ist das mehr ein Read-Only cache?

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    Fulk Fulk ist offline Mitglied Bronze
    Registriert seit
    Jan 2008
    Beiträge
    48
    Hallo!

    Danke für Deine Antwort!

    zu1)
    Ja, ich kenne bereits einige Implementierungen (OSCAche, EHCache, ...). Ich möchte aber erstmal sehen, ob so etwas auch mit Bordmitteln machbar.

    zu 3)
    Momentan ja, es sind statische Objekte, von denen nur gelesen wird. Tendenziell sollen aber dynamische, veränderbare Objekte gecacht werden.
     

Ähnliche Themen

  1. Mehrere COM-Ports synchronisieren
    Von Harry64 im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 08.07.10, 07:31
  2. Threads synchronisieren
    Von shinpei im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 20.01.10, 01:45
  3. Mehrere Threads (> 50.000) Linux
    Von MArc im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 12.10.08, 16:51
  4. Mehrere Ordner mit iPaq synchronisieren
    Von Bernd_Munich im Forum Handy, PDA & mobile Welt
    Antworten: 4
    Letzter Beitrag: 29.09.05, 09:14
  5. SWT mehrere Threads verwenden
    Von bigJ01 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 28.02.05, 09:44