----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
public class Test {
public static void main(String [] args){
syn1 ss1=new syn1();
syn2 ss2=new syn2();
new Thread(ss1).start();
new Thread(ss1).start();
new Thread(ss2).start();
}
}
class syn1 implements Runnable{
public String str1="";//new String("");//改成new String("");
public void run() {
synchronized(str1){
while(true){
try{Thread.sleep(1);}catch(Exception e){}
System.out.println("syn1:"+Thread.currentThread().getName());
}
}
}
}
class syn2 implements Runnable{
public String str2="";//new String("");改成new String("");
public void run() {
synchronized(str2){
while(true){
try{Thread.sleep(1);}catch(Exception e){}
System.out.println("syn2:"+Thread.currentThread().getName());
}
}
}
}
str1与str2其实是同一个对象,在第一个线程运行时,对该对象上了锁,因此每二个线程阻塞等待。这样写str1=new String("")和str2=new String("")就可以了
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------