一直在迷惑,java中的事件响应和线程之间是什么关系呢? 是不是本来就设置一个单独的线程在监听着事件的发生呢? 若否,为什么事件的响应速度还是很快呢?(比如cpu正在执行一段代码,这时点击鼠标为什么马上就会响应呢?) 求高手指教!

解决方案 »

  1.   

    想了半天似乎很难简单一两句说明。比如你在做一件事情,突然背后“嗙”的一声,你会不会马上回头看?这个在计算机中称之为中断机制,系统依赖中断机制建立所有的外部输入产生的事件源。但这还不够,还需要有程序去处理中断所产生的这个事件,因此每个GUI程序会有一个主线程,坚持不懈的循环检查事件列表,然后取出事件进行响应处理。另外还有一点需要说明,你所说的“比如cpu正在执行一段代码,这时点击鼠标为什么马上就会响应呢?”其实CPU是按时间片在执行的,即便是一段代码,可能都是分了好几次甚至几十次执行。我想你应该见过这样的情形:电脑屏幕有显示,但是移动鼠标,屏幕的鼠标指针没有任何反应对不对?这种情况才是真的忙到没空处理事件了。
      

  2.   

    有个叫事件派发(分发)线程
    java的GUI事件都是由它分发的,你可以看看这方面的资料。
      

  3.   

    一般有3种线程:主线程(main函数所在线程)、事件分发线程(用于把各个事件委派执行)和工作线程(用于执行事件)