Wie ich verstehe, Java Exception-Klasse ist sicherlich nicht unveränderlich (Methoden wie initCause
und setStackTrace
geben einige Hinweise dazu). Ist es zumindest Thread-sicher? Angenommen, eine meiner Klassen hat ein Feld wie das folgende:Java: ist Exception-Klasse Thread-sicher?
private final Exception myException;
Kann ich dieses Feld sicher mehreren Threads aussetzen? Ich bin nicht bereit, konkrete Fälle zu diskutieren, wo und warum diese Situation auftreten könnte. Meine Frage ist mehr über das Prinzip: Kann ich sagen, dass eine Klasse, die das Feld des Exception-Typs exponiert, Thread-sicher ist?
Ein weiteres Beispiel:
class CustomException extends Exception
{
...
}
Ist diese Klasse Thread-sicher?
+1 für "fühlt sich einfach falsch an." – Yishai
Das erste Beispiel ist tatsächlich hypothetisch.Ich kann mir so etwas in meinem Code kaum vorstellen :) Zum zweiten Beispiel. Kann ich in meiner Dokumentation sagen, dass die Klasse CustomException threadsicher ist und gut schläft? –
@Vilius: müssen Sie einige harsch-brained Anforderung erfüllen, die besagt, dass alle Klassen "fadensicher" sein müssen? Und natürlich macht eine thread-sichere Superklasse Thread-sichere Unterklassen nicht automatisch. Aber ja, ich würde keinen Schlaf verlieren. –