本帖最后由 yangyinhui 于 2013-4-6 18:20 编辑
- import java.util.concurrent.locks.*;
- class Demo4_Notify {
- public static void main(String[] args) {
- final Printer p = new Printer();
- new Thread() {
- public void run() {
- while (true)
- // 一直执行
- try {
- p.print1();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }.start();
- new Thread() {
- public void run() {
- for (int i = 0; i < 5; i++)
- // 指定执行的次数
- try {
- p.print2();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }.start();
- }
- }
- class Printer {
- private int flag = 1;
- private ReentrantLock lock = new ReentrantLock();
- private Condition c1 = lock.newCondition();
- private Condition c2 = lock.newCondition();
- public void print1() throws Exception {
- lock.lock();
- if (flag != 1)
- c1.await();
- System.out.print("你好");
- System.out.print("\r\n");
- flag = 2;
- c2.signal();
- lock.unlock();
- }
- public void print2() throws Exception {
- lock.lock();
- if (flag != 2)
- c2.await();
- System.out.print("大家好");
- System.out.print("\r\n");
- flag = 1;
- c1.signal();
- lock.unlock();
- }
- }
复制代码 这段代码我让一个线程为while (true)一个为for (int i = 0; i < 5; i++)程序执行后结果为但是程序却没有停止也不输出了,为什么啊?为什么不是输出5个大家好后一直输出你好啊?
你好
大家好
你好
大家好
你好
大家好
你好
大家好
你好
大家好
你好 |
|