2016-03-27 17 views
0

Eigentlich bin ich ein bisschen verwirrt in Bezug auf mehrere Erklärungen von Website oder Blog über Synchronisation und Thread-Safe. Ich habe etwas über verschiedene Klassen von Core Java Api oder Java Framework (Collections) geforscht. Und ich habe oft bemerkt, dass einige Klassen synchron und Thread-sicher sind, was bedeutet, dass jeweils nur ein Thread auf den Code zugreifen kann.Verwirrt über Synchronisation und Thread Safe? java

Aber ich brauche etwas Präzision:

  • Eine Klasse ist synchronisieren so sein Thread-sicher?
  • Oder synchronisieren und thread-safe haben zwei verschiedene Bedeutungen?

Mit freundlichen Grüßen

+0

Wahrscheinlich ein Duplikat von http://stackoverflow.com/questions/32163445/what-do-the-terms-synchronized-and-thread-safe-mean –

Antwort

0

Eine Klasse so sein Thread-sicher ist synchronisieren?

Eine Klasse ist nicht synchronisiert. Stattdessen wird eine Methode oder ein Codeblock synchronisiert.

Die Synchronisierung (unter Verwendung von synchronized) ist eine Möglichkeit, Code threadsicher zu machen. Es gibt andere Möglichkeiten.

Oder synchronisieren und thread-safe haben zwei verschiedene Bedeutungen?

Ja. Sie haben unterschiedliche Bedeutungen.


und ich habe oft bemerkt, dass einige Klasse synchronisieren und Thread-sicher, was bedeutet, zu einer Zeit, nur ein Thread den Code zugreifen kann.

Eigentlich, wenn Sie "bemerkt", dass Sie nicht aufgepasst!

Mit einer synchronizedMethode kann nur ein Thread auf den Code zugreifen, während eine bestimmte Sperre gehalten wird; Sie erhalten einen gegenseitigen Ausschluss. Wenn zwei Threads verschiedene Sperren verwenden, erhalten Sie nicht gegenseitigen Ausschluss.

Die andere Sache zu beachten ist, dass nur die Verwendung synchronized garantiert Thread-Sicherheit nicht. Sie müssen sie in der richtigen Weise nutzen:

  • Threads auf die entsprechenden Objekte/Schlösser
  • Fäden in allen geeigneten Code
  • synchronisieren müssen synchronisiert werden müssen, wenn der Code mehrere Schlösser bringt den Erwerb, die Schlösser müssen in einer Reihenfolge erworben werden, die Deadlocks vermeidet.