saschaaaaa
Goto Top

Unsynchronized Sleep in Synchronized Block

Hallo,

klingt erstmal doof, ist aber ganz wichtig.
Ich habe diesen Code:

public static void main(String blub){
	synchronized(this){
		Tue_etwas();
		Mach_noch_was();
		Und_noch_mehr();
		Und_das_Letzte();
	}
	System.out.println(i);
}
static int j = 5;
static int i = 0;
public static void Und_noch_mehr(){
	try{
		Thread.Sleep(10000);
	}catch(Exception e){}
	i = j;
}
@Override
public void keyPressed(KeyEvent e){
	j++;
}

Das ist ein ungetester Code und dient nur als Beispiel.
Wenn ich das jetzt starte (theoretisch), und 10 Tasten drücke, ist i immernoch 0 bei der Ausgabe, das soll synchronized ja bewirken!
aber wie schaffe ich es jetzt das NUR der Thread.Sleep "un-" synchronized ist? Alles andere soll synchronized sein!
"Und_das_letzte();" soll aber dennoch snychronized laufen...
Hat jemand eine Idee?

Mit freundlichen Grüßen
Sascha

Content-Key: 308310

Url: https://administrator.de/contentid/308310

Printed on: April 24, 2024 at 06:04 o'clock

Mitglied: 127103
Solution 127103 Jun 27, 2016 at 09:16:20 (UTC)
Goto Top
Hi,

"Object.wait" statt "Tread.Sleep" benützen... das enfernt den Lock von deinem Synchronized Block.

Gruß c
Member: Saschaaaaa
Saschaaaaa Jun 27, 2016 at 09:47:10 (UTC)
Goto Top
Danke hat perfekt funktioniert!