Ich lerne Synchronisation in Java. Habe heute den folgenden Beispielcode gefunden.Java Multi-Threading-Synchronisation
In der folgenden Code, test() Methode wird synchronisiert gemacht. Also gehe ich davon aus th1 's test() Aufruf würde vervollständigen und dann th2' s test() Aufruf starten würde. Aber so ist es nicht. Die Ausgänge sind miteinander verwoben. Kannst du mir bitte helfen, warum zu verstehen?
public class MyThread {
public static void main(String[] args)
{
SampleThread sample = new SampleThread("one");
Thread th = new Thread(sample);
th.start();
SampleThread sample2 = new SampleThread("two");
Thread th2 = new Thread(sample2);
th2.start();
}
}
class SampleThread implements Runnable
{
public SampleThread(String name)
{
this.name=name;
}
String name;
@Override
public void run() {
test();
}
public synchronized void test()
{
for(int j=0;j<10;j++)
{
System.out.println(name + "--" + j);
}
}
}
Got jetzt, danke! – expert