join und überschriebener Lock

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

join und überschriebener Lock
Hallo zusammen,

falls ein Thread ein Lock erwirbt, der später überschrieben wird also wird der Lock nicht freigegeben.
Nach der join() dieses Threads muss sich der Thread beenden und den Lock freigeben?

Vielen Dank :wink:


Falls du eine Situation meinst wie beim Schreibtischlauf auf dem vierten Aufgabenblatt: Nach dem Verlassen des [m]synchronized[/m]-Blocks wird der Lock korrekt freigegeben. So gibt zum Beispiel folgendes (Java 8)-Programm

public class Test {
	private static Object o = new Object();
	public static void main( String[] args ) {
		final Thread t = new Thread(() -> {
			final Object p = o;
			synchronized (o) {
				o = new Object();
			}
			System.out.println(Thread.holdsLock(o) + ", " + Thread.holdsLock(p));
		});
		t.start();
	}
}

erwartungsgemäß [m]false, false[/m] aus.

1 Like