Public Class A
{
private Object memberlockObject = new Object();
public doStuffapproach1(){
synchronized(this){
// Do something;
}
}
public doStuffapproach2(){
synchronized(memberlockObject){
// Do something;
}
}
public doStuffapproach3(Object parameterLockObject){
synchronized(parameterLockObject){
// Do something;
}
}
}
In dem obigen Code, tun die Methoden doStuffapproach1, doStuffapproach2, doStuffapproach3 die gleiche Art von Blocksynchronisation erreichen oder nicht. Wenn nicht, wie unterscheiden sie sich voneinander. In welchen Szenarien sollte jedes verwendet werden?Was ist der Unterschied zwischen synchronisiert (this) und synchronisiert (ein anderes Objekt)
P.S: Ich verstehe, dass die Synchronisation auf Methodenebene so gut ist wie das Synchronisieren des ganzen Methodenkörpers auf (dies).
Hinweis: Eigentlich sollten Sie vorher etwas recherchieren, bevor Sie Fragen stellen. Und gut, das Zeug ist wirklich überall dokumentiert ... und versuche auch, die Anzahl der verwendeten Tags auf das notwendige Minimum zu reduzieren. – GhostCat