Das ist deshalb so, weil Tomcat ein Application Server ist, und du (im Gegensatz zu PHP) einen
Application Context hast.
Zu deiner eigenen Antwort ergänzend: Wenn du eine Methode als synchronized definierst, garantierst du, dass nur ein Thread aktuell die Methode aufrufen kann.
Um eine feinere Regelung zu erzielen, kannst du mit dem Schlüsselwort synchronized auch einzelne Variablen sperren - im Beispiel sperrst du die aktuelle Instanz (this):
Code:
public void print(Point p) {
float safeX, safeY;
synchronized(this) {
// Diese zwei Zeilen laufen
// jetzt atomar ab
safeX = p.x();
safeY = p.y();
}
}
(Aus:
http://jerry.c-lab.de/java/21Tage/kap18.htm)
Meistens trifft es bei Webanwendungen sowieso die Datenbank - hier solltest du aber eher auf den JDBC Connection Pool (für Datenbankverbindungen) und natürlich auf Transaktionen auf Datenbank-Ebene setzen.
Cheers, Thomas