鉴于此代码:
public class Messager implements Runnable {
public static void main(String[] args) {
new Thread(new Messager("Wallace")).start();
new Thread(new Messager("Gromit")).start();
}
private String name;
public Messager(String name) { this.name = name; }
public void run() {
message(1); message(2);
}
private synchronized void message(int n) {
System.out.print(name + "-" + n + " ");
}
}
我知道synchronized
关键字使线程依赖于对象的锁。问题:
a) 标记为的方法synchronized
完成后是否立即释放锁?或者一旦线程的run()
方法完成 b) 我可以确保任何一个线程都将打印其名称并且1 2
在另一个之前打印它的名称吗?