Gibt es allgemeine Regeln/Richtlinien dafür, was eine Methode threadsicher macht? Ich verstehe, dass es wahrscheinlich eine Million einmaliger Situationen gibt, aber wie sieht es überhaupt aus? Ist es so einfach?Was macht eine Methode fadensicher? Wie lauten die Regeln?
- Wenn eine Methode nur auf lokale Variablen zugreift, ist sie Thread-sicher.
Ist es das? Gilt das auch für statische Methoden?
Eine Antwort, die von @Cybis vorgesehen war:
Lokale Variablen unter Threads gemeinsam genutzt werden kann, da jeder Thread seinen eigenen Stapel bekommt.
Ist das auch bei statischen Methoden der Fall?
Wenn eine Methode ein Referenzobjekt übergeben wird, bricht die Thread-Sicherheit ab? Ich habe etwas recherchiert, und es gibt eine Menge da draußen über bestimmte Fälle, aber ich hatte gehofft, in der Lage zu sein, mit nur ein paar Regeln, Richtlinien zu definieren, um sicherzustellen, dass eine Methode threadsicher ist.
Also ich denke, meine ultimative Frage ist: "Gibt es eine kurze Liste von Regeln, die eine thread-sichere Methode definieren? Wenn ja, was sind sie?"
BEARBEITEN
Viele gute Punkte wurden hier gemacht. Ich denke, die wirkliche Antwort auf diese Frage lautet: "Es gibt keine einfachen Regeln, um die Thread-Sicherheit zu gewährleisten." Cool. Fein. Aber im Allgemeinen Ich denke, die angenommene Antwort bietet eine gute, kurze Zusammenfassung. Es gibt immer Ausnahmen. So sei es. Ich kann damit leben.
Sie dürfen nicht auf Variablen zugreifen, auf die auch andere Threads ohne Locketh zugreifen. –
Hanth Pathant hat sich in einen Igor verwandelt! –
Auch .. 'Du darfst nicht auf Variablen zugreifen, die auch von anderen Threads ohne Locketh zugänglich sind' - es ist nicht so wichtig, wenn der gelesene Wert gelegentlich nicht der letzte ist oder tatsächlich grob inkorrekt ist. –