Hi,
Im Bereich Threads habe ich recht wenig Erfahrung. Daher sorry falls diese Frage eigentlich zu den Anfängerfragen gehören sollte.
ich würde gerne wissen, ob ich unter den gleich folgenden "Umständen" in ein Threadproblem, d.h. mehrere Threads verändern das gleiche Objekt, laufen kann.
Der Einstieg erfolgt über ein Servlet, welches über keine Instanzvariablen verfügt. Alles geschieht in doPost. Innerhalb doPost erzeuge ich mir eine Objekt der Klasse A. Diese Klasse A enthält jetzt Instanzvariablen. Innerhalb des doPost werden diese Instanzvariablen manipuliert.
Pseudocode doPost:
Pseudocode Klasse A:
Im Prinzip denke ich eigentlich nicht das ich damit Probleme bekomme, da zwar durch den mehrfachen gleichzeitigen Zugriff auf das Servlet mehrere Threads gleichzeitig mit doPost arbeiten, aber alles was innerhalb doPost abläuft "atomar" sein sollte. Oder täusche ich mich da und der JVM optimiert innerhalb doPost rum und nutzt ab und ab das gleiche Objekt?
Ich habe gelesen das man generell, falls möglich, Instanzvariablen auf final setzen sollte. Final ermöglicht ja das einmalige setzen des Zeigers auf ein Objekt. Wenn ich jetzt das Tempfile im obigen Beispiel auf final setze, kann ich dem tempFile mit setFile noch einmalig das file in doPost zuordnen? Oder bekomme ich da Probleme, weil ich das tempFile schon mit null explizit initialisiert habe?
Gruß
Alex
Im Bereich Threads habe ich recht wenig Erfahrung. Daher sorry falls diese Frage eigentlich zu den Anfängerfragen gehören sollte.
ich würde gerne wissen, ob ich unter den gleich folgenden "Umständen" in ein Threadproblem, d.h. mehrere Threads verändern das gleiche Objekt, laufen kann.
Der Einstieg erfolgt über ein Servlet, welches über keine Instanzvariablen verfügt. Alles geschieht in doPost. Innerhalb doPost erzeuge ich mir eine Objekt der Klasse A. Diese Klasse A enthält jetzt Instanzvariablen. Innerhalb des doPost werden diese Instanzvariablen manipuliert.
Pseudocode doPost:
Code:
// doPost ...
...
ClassAObject a = new ClassAObject();
a.setFile(file);
a.checkFile();
...
Pseudocode Klasse A:
Code:
...
// Instanzvariable
File tempFile = null;
public void setFile(File file){
this.tempFile = file;
}
public void checkFile(){
// checke manipuliere etc. das File
}
...
Im Prinzip denke ich eigentlich nicht das ich damit Probleme bekomme, da zwar durch den mehrfachen gleichzeitigen Zugriff auf das Servlet mehrere Threads gleichzeitig mit doPost arbeiten, aber alles was innerhalb doPost abläuft "atomar" sein sollte. Oder täusche ich mich da und der JVM optimiert innerhalb doPost rum und nutzt ab und ab das gleiche Objekt?
Ich habe gelesen das man generell, falls möglich, Instanzvariablen auf final setzen sollte. Final ermöglicht ja das einmalige setzen des Zeigers auf ein Objekt. Wenn ich jetzt das Tempfile im obigen Beispiel auf final setze, kann ich dem tempFile mit setFile noch einmalig das file in doPost zuordnen? Oder bekomme ich da Probleme, weil ich das tempFile schon mit null explizit initialisiert habe?
Gruß
Alex