美文网首页
Swing事件分发线程

Swing事件分发线程

作者: 是什么样的心情 | 来源:发表于2019-06-04 21:11 被阅读0次

事件队列:在计算机数据结构中,队列是一个特殊的数据结构。其一、它是线性的;其二、元素是先进先出的,也就是说进入队列的元素必须从末端进入,先入队的元素先得到执行,后入队的元素等待前面的元素执行完毕出队后才能执行,队列的处理方式是执行完一个再执行下一个。
而Swing的事件队列就类似(基本原理相似,但是Swing内部实现会做些优化)于上述的事件队列,说它是单线程图形工具包指的是仅有单一消费者,也就是常说的事件分发线程(EDT),一般来讲,除非你的应用程序停止,否则EDT会永不间断地徘徊在处理请求与等待请求之间。下图是Swing事件队列的实现机制:

EventDispatchThread.jpg

和其他很多桌面API一 样,Swing将GUI请求放入一个事件队列中执行。

EventDispath Thread:EventQueue的派发机制由单独的一个线程管理,这个线程称为事件派发线程(EDT)
EDT要处理所有GUI操作,它是职责分明且非常忙碌的。也就是说你要记住两条原则:一、职责分明,任何GUI请求都应该在EDT中调用。二、需要处理的GUI请求非常多,包括窗口移动、组件自动重绘、刷新,它很忙,所以任何与GUI无关的处理不要由EDT来负责,尤其是I/O这种耗时的操作。

相关文章

  • Swing事件分发线程

    事件队列:在计算机数据结构中,队列是一个特殊的数据结构。其一、它是线性的;其二、元素是先进先出的,也就是说进入队列...

  • Java自学-图形界面 Swing中的线程

    Swing中的线程 步骤 1 : 三种线程 在Swing程序的开发中,需要建立3种线程的概念 初始化线程初始化线程...

  • Java编程之多线程&并发编程(下)

    6. Swing应用中的多线程问题 Swing应用运行于多个线程之上。特别是三类线程:1.起始线程,或主线程,在...

  • AsyncTask使用总结和源码分析

    简介 当android应用启动的时候会启动一条主线程,这个主线程负责向UI组件分发事件(包括绘制事件),所以当在主...

  • 项目启动优化

    工具 BlockCanary, 通过记录UI线程的事件分发,找到UI线程卡顿的操作,最后更新2017-08-17,...

  • Android UI线程和非UI线程

    UI线程及Android的单线程模型原则 当应用启动,系统会创建一个主线程。这个主线程负责向UI组件分发事件(包括...

  • View绘制流程及事件分发

    事件分发相关 1、事件分发流程 ViewGroup的事件分发 View的事件分发 View和ViewGroup的O...

  • Activity 对点击事件的分发机制

    ViewGroup对点击事件的分发机制View 对点击事件的分发机制 事件分发流程概述 注:Android事件分发...

  • 事件分发机制总结

    事件分发 所谓事件,就是点击事件,即MitionEvent对象;事件分发,就是对MotionEvent事件的分发过...

  • Handler 相关

    当Android应用程序启动时,会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI控件进行事件分发...

网友评论

      本文标题:Swing事件分发线程

      本文链接:https://www.haomeiwen.com/subject/wxrjdttx.html