package?com.umbrella.container.queue;
import?java.util.concurrent.locks.Condition;
import?java.util.concurrent.locks.Lock;
import?java.util.concurrent.locks.ReentrantLock;
public?class?ThreadTest?{
????static?Lock?lock?=?new?ReentrantLock();
????static?Condition?w?=?lock.newCondition();
????static?Condition?n?=?lock.newCondition();
????static?boolean?isW?=?false;
????public?void?printW()?{
????????try?{
????????????lock.lock();
????????????while?(!isW)?{
????????????????w.await();
????????????}
????????????System.out.println("w");
????????????n.signalAll();
????????}?catch?(InterruptedException?e)?{
????????????e.printStackTrace();
????????}?finally?{
????????????lock.unlock();
????????}
????}
????public?void?printN()?{
????????try?{
????????????lock.lock();
????????????while?(isW)?{
????????????????n.await();
????????????}
????????????System.out.println("n");
????????????w.signalAll();
????????}?catch?(InterruptedException?e)?{
????????????e.printStackTrace();
????????}?finally?{
????????????lock.unlock();
????????}
????}
????public?static?void?main(String[]?args)?{
????????ThreadTest?t?=?new?ThreadTest();
????????new?Thread(()?->?{
????????????t.printW();
????????},?"w").start();
????????new?Thread(()?->?{
????????????t.printN();
????????},?"n").start();
????}
}用lock鎖 想要做成兩個(gè)線程交替輸出 但老是搓的? 哪里錯(cuò)了啊
添加回答
舉報(bào)
0/150
提交
取消