Heyho,
schaue mir gerade synchronized threads an und hab mir mal gedacht ich schreib nen kleines Programm, um zu sehen ob ichs verstanden habe. Und anscheinend versteh ichs noch nicht. Hier mal mein Programm und danach die Erklärung, was ich mit dem Programm bewerkstelligen wollte.
2 threads: Unser Einstiegspunkt, also die main und der zweite thread, der in der main erstellt wird. Nun ührt der zweite thread eine synchronized Methode aus (die möglicherweise Daten enthalten könnte die nur von einem thread gleichzeitig bearbeitet werden sollten). Danach wird die Methode aus dem main thread aufgerufen. Was ich nun gedacht habe ist, dass beim aufruf der Methode von thread 2 die Methode locked, 3 Sekunden wartet und dann durch wait() den lock wieder frei gibt damit der main thread die Methode aufrufen kann... Jedoch wird die Methode von beiden threads sofort aufgerufen? Was habe ich falsch verstanden?^^
p.s.: Vorsicht Deadlock >:3
schaue mir gerade synchronized threads an und hab mir mal gedacht ich schreib nen kleines Programm, um zu sehen ob ichs verstanden habe. Und anscheinend versteh ichs noch nicht. Hier mal mein Programm und danach die Erklärung, was ich mit dem Programm bewerkstelligen wollte.
Code:
public class Main
{
public String s;
public long i;
Main(String s, long i)
{
this.s = s;
this.i = i;
}
public synchronized void foo()
{
System.out.println("Start " + s + " Thread!");
try
{
Thread.sleep(i);
wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("End " + s + " Thread!");
}
public static void main(String argv[])
{
new Thread()
{
public void run()
{
Main m = new Main("First", 3000);
m.foo();
}
}.start();
Main m = new Main("Second", 0);
m.foo();
}
}
p.s.: Vorsicht Deadlock >:3