通过条件队列实现
public class Test {
public static void main(String [] args){
Say say = new Say();
new Thread(new Runnable() {
@Override
public void run() {
say.say1();
}
}).start();
new Thread(new Runnable(){
public void run(){
say.say2();
}
}).start();
}
}
public class Say {
private Lock lock = new ReentrantLock();
private Condition condition1 = lock.newCondition();
private Condition condition2 = lock.newCondition();
public void say1(){
lock.lock();
try {
while (true) {
System.out.println("Thread1");
condition2.signal();
try {
condition1.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}finally{
lock.unlock();
}
}
public void say2(){
lock.lock();
try {
while (true) {
System.out.println("thread2");
condition1.signal();
try {
condition2.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}finally{
lock.unlock();
}
}
}