本人对事件派发线程还不太了解,我们使用事件派发线程刷新界面的时候,java是否是将刷新的事件放入了一个队列中,派发线程进行派发执行?我想应该是这样的吧。
那么如果插入的过于频繁,而刷新的事件又比较耗时,是否会有事件派发线程取出执行的速度赶不上插入的速度,不堪重负将队列按一定规则删除某些事件的情况?这种情况怎么验证呢?
如果哪位大人有相关的资料,谢谢能告诉我:)

解决方案 »

  1.   

    靠,怎么没有人嘞~!!!没来csdn这么久,这么没人气了?
      

  2.   

    大概就是这样子吧?一个简单的小例子
    public class ThreadTemp implements Runnable{
        
        private Something s;
        
        public ThreadTemp(Something s){
            this.s = s;
        }
        
        public void run(){
            while(true){
                //do something...
                Something sub = new Something();
                Thread t = new Thread(new ThreadTemp(sub));
                t.start();
            }
        }    public static void main(String[] args){
            Something main = new Something();
            //set main...
            Thread t = new Thread(new ThreadTemp(main));
            t.start();
        }}
      

  3.   

    频繁的插入和执行操作,是否会删除某些事件的情况,主要由你的编码决定
    适当的synchronized是不错的选择
      

  4.   

    事件产生后的确是放在队列里面的,然后,分发处理线程会调用相关的监听器处理。
    一个事件会不会丢弃,取决于事件的类型,有些事件是可以能被丢弃的,有一些事件不会被丢弃,这个要看具体的情况。
    参考: KeyEventDispatcher