本帖最后由 qasdx1 于 2014-12-19 04:04:24 编辑

解决方案 »

  1.   

    (1)调用线程的  threadA.wait();和threadA.notify();  时,均会出现 java.lang.IllegalMonitorStateException 异常,具体请见 MyFrame 类 下的 Clicked() 的注释部分。请问这个异常是由什么触发的。会不会与我在线程的run() 方法里面调用 sleep() 有关A: wait/notify 需要放在同步块里面。而且,Wait/notify一般是放在锁对像上,而不是直接在外面调用线程对像的 上
    (2)为了实现实验要求,我使用了 suspend();  和  resume();  这种方法,可是 java 7 中已经明确反对这种方法了。还有没有其他的解决方法。
    A: Suspend方法可以在线程中加一个判断条件,如果为true则继续执行,如果为false则wait,直到被notify.
      

  2.   

    如果仅仅为了实现你的题目目标的话,根本用不着wait、notify、suspend、resum等这些啊。
    在主线程开一个线程就可以搞定了。至于鼠标点击不显示/恢复显示,只需要设置一个标志,每隔n毫秒检测一下标志,如果标志是显示,则显示,如果标志是不显示,就不显示,每个循环中sleep(n)就好了。就这么简单的啊。不懂你为何要搞那么复杂的。
      

  3.   

    threadA.wait();和threadA.notify(); 需要在同步块中即synchronized 块中