一个带有GUI的java程序的主线程是如何运行的?比如当一个时间发生时,是否线程会停止当前的认为的执行,转入事件处理代码执行?是这样吗?还是没有线程的切换?同时,如果在一个GUI线程中有同步问题,open()函数中调用了obj.wait(),在事件处理函数中调用了obj.notifyAll()这个同步过程是如何进行的?
还有
open()
{
  sychronized(obj);
obj.wait();
} public void controllerUpdate(ControllerEvent evt) {
synchronized (obj) {
stateTransitionOK = true;
obj.notifyAll();
}
}  
在这种情况下synchronized是同一个线程中,作用是什么?仅仅是为obj对象的使用提供环境吗

解决方案 »

  1.   

    gui程序有专门的事件处理线程。所有的事件处理都添加到这个事件处理线程中。
    比如给按钮添加的监听器中执行的内容就在awt-event线程中。当处理一个事件耗时比较长时,就会产生图形界面假死(不能接着做下面的操作)。这时就应该另外起一个线程来处理,减少这个处理占用事件处理线程的时长。你后面写的确实看不明白
      

  2.   

    谢谢你的回帖,终于遇到一位不是灌水的了
    关于GUI的线程相关的知识,你‘能否推荐一点书籍,或者给我一点网络资源也行
      

  3.   

    这个讲Swing/SWT/AWT的书或者web资源都会提到的
      

  4.   

    Java2 图形界面编程 第二章就好像说到有