new Thread(){
public void run(){
send(new String(" zhangsan"));
}
}.start();
new Thread(){
public void run(){
send(new String(" zhangsan"));
}
}.start();
new Thread(){
public void run(){
send(new String("lisi"));
}
}.start();
}
public static void send(String name){
synchronized (name) {
System.out.println(Thread.currentThread().getName() + "," + name);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
*******以上,不产生锁定,new String(value):value相同,产生了两个不同的对象,以下的方式产生锁定*******
public static void main(String args[]){
new Thread(){
public void run(){
send("zhangsan");
}
}.start();
new Thread(){
public void run(){
send("zhangsan");
}
}.start();
new Thread(){
public void run(){
send("lisi");
}
}.start();
}
public static void send(String name){
synchronized (name) {
System.out.println(Thread.currentThread().getName() + "," + name);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}