J
Jan_HH
Gast
Hallo,
Streit mit Nachbarn vorhin:
Wenn eine Klasse (bzw. ein Objekt dieser Klasse) zwei Funktionen hat, beide synchronizd, also so:
class MyClass
{
public synchronized methodA()
...
public synchronized methodB()
...
}
blockieren die sich dann gegenseitig, oder ist nur jede Funktion für sich synchronisiert? Also wenn ein Thread in methodA ist, kann während dessen von einem anderen Thread methodB aufgerufen werden?
In Core java 2 steht nämlich:
"When one thread calls a synchronized method, it is guaranteed that the method will finish before another thread can execute any synchronized method on the same object".
Das interpretiere ich so, dass die Funktionen sich gegenseitig blockieren. Nachbar aber bestreitet das (und hat unbestreitbar mehr Ahnung von java als ich). Also verunsicherung. Wie isset denn nun?
Gruß+Danke
Jan
Streit mit Nachbarn vorhin:
Wenn eine Klasse (bzw. ein Objekt dieser Klasse) zwei Funktionen hat, beide synchronizd, also so:
class MyClass
{
public synchronized methodA()
...
public synchronized methodB()
...
}
blockieren die sich dann gegenseitig, oder ist nur jede Funktion für sich synchronisiert? Also wenn ein Thread in methodA ist, kann während dessen von einem anderen Thread methodB aufgerufen werden?
In Core java 2 steht nämlich:
"When one thread calls a synchronized method, it is guaranteed that the method will finish before another thread can execute any synchronized method on the same object".
Das interpretiere ich so, dass die Funktionen sich gegenseitig blockieren. Nachbar aber bestreitet das (und hat unbestreitbar mehr Ahnung von java als ich). Also verunsicherung. Wie isset denn nun?
Gruß+Danke
Jan