public class DualSynch {
private Object syncObject = new Object();
public synchronized void f() {
for(int i = 0; i < 5; i++) {
Print.print("f()");
//Thread.yield();
}
}
public void g() {
synchronized(syncObject) {
for(int i = 0; i < 5; i++) {
Print.print("g()");
//Thread.yield();
}
}
}
}
public class SyncObject {
public static void main(String[] args) {
final DualSynch ds = new DualSynch();
new Thread() {
public void run() {
ds.f();
}
}.start();
ds.g();
}
}
另外,Thread.yield()在这里起什么作用?
经过运行发现,f()和g()在两个线程中交替执行,而加上Thread.yield()之后则会先执行完其中一个线程的方法,再执行另一个线程的方法。
但我对这个同步机制不是特别理解