(1.) 指定线程池的属性信息,譬如:核心大小、最大大小、等待队列的性质等。你特别要关注的是ExecutorFilter 内部默认使用的是OrderedThreadPoolExecutor 作为线程池的实现,从名字上可以看出是保证各个事件在多线程执行中的顺序(譬如:各个事件方法的执行是排他的,也就是不可能出现两个事件方法被同时执行;messageReceived()总是在sessionClosed() 方法之前执行), 这是因为多线程的执行是异步的, 如果没有OrderedThreadPoolExecutor 来保证IoHandler 中的方法的调用顺序,可能会出现严重的问题。但是如果你的代码确实没有依赖于IoHandler 中的事件方法的执行顺序,那么你可以使用UnorderedThreadPoolExecutor 作为线程池的实现。因此,你也最好不要改变默认的Executor 实现,否则,事件的执行顺序就会混乱,譬如:messageReceived()、messageSent()方法被同时执行。
程池中执行, 此方法用于执行异步任务, 参数params表示异步任务的输入参数. 在此方法中可以通过publishprogress()方法来更新任务的进度, publishprogress()方法会调用onprogressupdate()方法. 另外此方法需要返回计算结果给onpostexecute()。1.当一个线程进入到了标有synchronized关键字的方法时,他就得到了监视器,并且锁定了监视器,只有这个方法执行完后,其他的线程才可以执行这个方法。
public enum IoEventType {
SESSION_CREATED,
SESSION_OPENED,
SESSION_CLOSED,
MESSAGE_RECEIVED,
MESSAGE_SENT,
SESSION_IDLE,
EXCEPTION_CAUGHT,
WRITE,
CLOSE,
}
默认情况下,没有配置关注的事件类型,有如下六个事件方法会被自动使用线程池异步执行:
nagios将处理这些来自插件的结果并做些该做的动作(运行事件处理句柄、发送出告警等)。3) 如果某个线程调用 waitone 方法,则当事件状态为终止状态时,该线程会得到信号,继续向下执行。4 调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run方法。在处理线程中调用这个方法返回所需要的数据序列并处理之,这样不但没有丢失数据的现象行出现,也没有数据接收延迟了。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-93147-39.html
你牛
都说天鹅是白色的