默认情况下,ZK的过程中一个独立的线程的事件称为事件处理线程。因此,开发人员可以暂停,恢复在任何时间执行,没有阻止发回的响应到浏览器的servlet线程。但是异常情况下的很多个servlet线程被挂起的时候,将严重消耗我们服务器的cup内存,所以zk提供了个一个可以禁用事件处理线程的使用,
换句话说,你可以强制ZK的处理像其他传统的Servlet线程框架的所有事件。
当然,如果Servlet的线程正在执行,
你就不能暂停。
要禁用的事件处理线程使用,您必须指定以下内容 WEB-INF/zk.xml.
这里是优点和有关使用Servlet的线程来处理事件的局限性
zk5.0.2与zk3.6.4中事件处理线程配置区别
在zk5以前的版本中,以下配置默认为false,而在zk5以后默认为true(zk.xml文件中)
这两种的区别:
等于false时,启用事件处理线程,等于true时禁用事件处理线程
启用时,zk创建本地事件处理线程,处理弹出模式窗口,当弹出窗口时,等待用户操作,代码停止执行,
用户操作完毕后,继续执行代码
禁用时,zk弹出模式窗口使用servlet线程统一处理,代码执行完毕后,弹出窗口,
if (Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES) {this_never_executes(); }
this_never_executes();//事件处理线程被启用时方法不会被执行.
MessageBox.show(.....);//注册一个事件监听器,同样能处理这样的问题.
Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO, Messagebox.QUESTION, new EventListener() { public voidonEvent(Event evt) { switch (((Integer)evt.getData()).intValue()) { case Messagebox.YES: doYes(); break; //the Yes button is pressed case Messagebox.NO: doNo(); break; //the No button is pressed } } } );
要禁用的事件处理线程使用,您必须指定以下内容 WEB-INF/zk.xml.
<system-config> <disable-event-thread>true</disable-event-thread>
</system-config>
这里是优点和有关使用Servlet的线程来处理事件的局限性
使用Servlet的线程 使用事件处理线程 Integration 减集成问题。多容器承担的HTTP请求是在servlet线程处理。 您可能需要执行 EventThreadInit和/或 EventThreadCleanup解决一体化问题。ZK的和社会继续提供多功能一体化的实现来解决问题。 SuspendResume 没办法暂停执行的事件监听器。举例来说,你不能创建一个模式窗口。 没有限制的。
zk5.0.2与zk3.6.4中事件处理线程配置区别
在zk5以前的版本中,以下配置默认为false,而在zk5以后默认为true(zk.xml文件中)
这两种的区别:
等于false时,启用事件处理线程,等于true时禁用事件处理线程
启用时,zk创建本地事件处理线程,处理弹出模式窗口,当弹出窗口时,等待用户操作,代码停止执行,
用户操作完毕后,继续执行代码
禁用时,zk弹出模式窗口使用servlet线程统一处理,代码执行完毕后,弹出窗口,
if (Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES) {this_never_executes(); }
this_never_executes();//事件处理线程被启用时方法不会被执行.
MessageBox.show(.....);//注册一个事件监听器,同样能处理这样的问题.
Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO, Messagebox.QUESTION, new EventListener() { public voidonEvent(Event evt) { switch (((Integer)evt.getData()).intValue()) { case Messagebox.YES: doYes(); break; //the Yes button is pressed case Messagebox.NO: doNo(); break; //the No button is pressed } } } );