Ich hätte wieder einmal eine Fragen, zu deren Beantwortung ich schon viel gelesen habe, aber leider nichts zur endgültigen Weisheit gelangt bin.
ich versuche derzeit mein Servlet (und die dahinterhängenden EJB`s ) zu testen, in dem ich an meinem Client mehrere Threads erzeuge und diese auf das Servlet losjage.
Meines Wissen erzeugt z.B. der Jserv als auch der BenaTA mehrere Threads zum Aufruf des Servlets.
Das bedeutet doch für mich, dass ich meine Klasse "threadsicher" machen muss.
Dies geschieht doch im allgemeinen doch das Schlüsselwort "synchronized".
Zuerst dachte ich dieses Schlüsselwort nur denjenigen Methoden voranstellen zu müssen, die schreibenden Zugriff auf externe Datenquellen besitzen.
Je mehr ich mich aber schlau mache, desto unsicherer werde ich mir dabei;
Im letzten Java-Spektrum steht z.B. folgender Satz:
"Immer wenn die Erzeugung von Instanzen in einem nebenläufigen Kontext (sprich nicht im Konstruktor) erfolgt, ist es nötig, die Synchronisation sicherzustellen. Nur wenn die Instanzierung beim Laden der Klasse ausgeführt wird, sorg der ClassLoader für die Synchronisation."
Oder in einem anderen buch
"Sobald eine Methode den Zustand eines Objektes verändert, ist diese zu synchronisieren"
Heißt da jetzt für mich das ich eigentliche jede Erzeugung einer Klasse und fast jeden Methodenaufruf synchronisieren muss ??
Kann doch nicht sein...
Ich hoffe Sie können mir hier weiterhelfen.
ich versuche derzeit mein Servlet (und die dahinterhängenden EJB`s ) zu testen, in dem ich an meinem Client mehrere Threads erzeuge und diese auf das Servlet losjage.
Meines Wissen erzeugt z.B. der Jserv als auch der BenaTA mehrere Threads zum Aufruf des Servlets.
Das bedeutet doch für mich, dass ich meine Klasse "threadsicher" machen muss.
Dies geschieht doch im allgemeinen doch das Schlüsselwort "synchronized".
Zuerst dachte ich dieses Schlüsselwort nur denjenigen Methoden voranstellen zu müssen, die schreibenden Zugriff auf externe Datenquellen besitzen.
Je mehr ich mich aber schlau mache, desto unsicherer werde ich mir dabei;
Im letzten Java-Spektrum steht z.B. folgender Satz:
"Immer wenn die Erzeugung von Instanzen in einem nebenläufigen Kontext (sprich nicht im Konstruktor) erfolgt, ist es nötig, die Synchronisation sicherzustellen. Nur wenn die Instanzierung beim Laden der Klasse ausgeführt wird, sorg der ClassLoader für die Synchronisation."
Oder in einem anderen buch
"Sobald eine Methode den Zustand eines Objektes verändert, ist diese zu synchronisieren"
Heißt da jetzt für mich das ich eigentliche jede Erzeugung einer Klasse und fast jeden Methodenaufruf synchronisieren muss ??
Kann doch nicht sein...
Ich hoffe Sie können mir hier weiterhelfen.
Comment