本节讨论在多线程环境下的事件处理。
有时,线程需要等待某事件发生,比如一个条件变为true,或者某任务被另一个线程完成。
例如,我们创建一个基于网络的应用程序,处理如下的任务:
现在,它包含2个线程,线程1的任务是:
有时,线程需要等待某事件发生,比如一个条件变为true,或者某任务被另一个线程完成。
例如,我们创建一个基于网络的应用程序,处理如下的任务:
1、与处理器进行一些握手操作; 2、从xml文件load数据; 3、处理从xml文件load的数据.
可以发现,任务1不依赖其他的任务,而任务3则依赖于任务2,这意味着任务1和任务2可以由不同的线程并行运行,以提升程序性能。
现在,它包含2个线程,线程1的任务是:
·与服务器进行握手操作 ·等待线程2从xml获取的数据 ·处理从xml获取的数据
·从xml获取数据 ·通知另一个线程,即等待消息
在上图中,线程1处理一些操作,然后等待event发生,这event是 “数据是否成功获取”,一旦线程1收到该event,那么它将对数据进行处理。
当线程1忙于处理握手机制时,线程2并行地获取数据。