A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘旭 黑马帝   /  2012-3-24 21:18  /  1651 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package myclassloadertest;

//子线程打印3次,主线程打印5次;再子线程打印3次,主线程打印5次;……
public class TraditionalTimerTest {
        static boolean isSub = true;
        static A a = new A();

        public static void main(String[] args) throws Exception {
                new Thread(new Runnable() {
                        public void run() {
                                while (true) {
                                        synchronized (A.class) {
                                                while (!isSub) {
                                                        try {
                                                                a.wait();
                                                        } catch (Exception e) {
                                                        }
                                                }
                                                try {
                                                        for (int i = 1; i <= 3; i++) {
                                                                System.out.println("i=" + i + "  " + "sub");
                                                        }

                                                        isSub = false;
                                                        a.notify();
                                                } catch (Exception e) {
                                                }
                                        }
                                }
                        }
                }).start();
                new TraditionalTimerTest().main();
        }

        void main() throws Exception {
                while (true) {
                        synchronized (A.class) {
                                while (isSub) {
                                        a.wait();
                                }
                                for (int i = 1; i <= 5; i++) {
                                        System.out.println("i=" + i + "  " + "main");
                                }
                                isSub = true;
                                a.notify();
                        }
                }
        }
}

class A {
}

我自己编的,为什么总是抛出异常啊?

3 个回复

倒序浏览
notify()是线程自身调用的吧。。。你用a.notify()是啥意思?
回复 使用道具 举报
while里面wait();多次会报错
回复 使用道具 举报
已解决,谢谢大家
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马