JAVA基础:浅谈Java与C#的事件处理机制

文章作者 100test 发表时间 2007:03:14 17:01:49
来源 100Test.Com百考试题网


以上两个方法的前面均冠以synchronized,是因为运行在多线程环境时,可能同时有几个对象同时要进行注册和注销操作,使用synchronized来确保它们之间的同步。开发工具或程序员使用这两个方法
建立源与监听者之间的事件流。

protected void notifyModelChanged() {

/*事件源使用本方法通知监听者发生了modelChanged事件*/


Vector l.


EventObject e = new EventObject(this).


   

首先要把监听者拷贝到l数组中,冻结EventListeners的状态以传递事件。这样来确保在事件传递到所有监听者之前,已接收了事件的目标监听者的对应方法暂不生效。

synchronized(this) {


l = (Vector)listeners.clone().


}


for (int i = 0. i < l.size(). i ) {


/* 依次通知注册在监听者队列中的每个监听者发生了modelChanged事件,


并把事件状态对象e作为参数传递给监听者队列中的每个监听者*/


((ModelChangedListener)l.elementAt(i)).modelChanged(e).


  }


}


}



在程序中可见事件源Model类显式地调用了接口中的modelChanged方法,实际是把事件状态对象e作为参数,传递给了监听者类中的modelChanged方法。

相关文章


入门基础Java参数传递方式
JAVA基础:Linux下的多线程编程
Java实现HTTP文件下载
JAVA基础:Java语言开发工具大比拼
JAVA基础:浅谈Java与C#的事件处理机制
JAVA基础:从.class文件中寻找类名
平台非依赖性建议及使用抽象隔离变化
指导:如何掌握Java(J2SE篇)
新手必读Java中流的概念
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛