跟中学语文课本上面描述的统筹方法一样, 当存在多个任务: 煮饭, 洗衣两个任务发生时, 如何异步的处理所有事情, 节省时间。
非统筹是这样做的【同步方法】:
第一步: 洗米, 煮饭,打开电饭煲
第二步:等待, 直到饭煮好后, 再洗衣服
统筹是这样做的【异步方法】:
第一步: 洗米, 煮饭,打开电饭煲
第二步:不理会煮饭, 直接洗衣服
举例以下几种耗时操作:
1. 界面调用一个耗时的后台操作(以SWT 为例)
2. Java 调用一个耗时的本地代码(JNI)
耗时操作危害是很大的, 比如界面如果调用耗时的后台操作, 整个界面都会假死, 用户误认为软件出现死机, JNI中, JVM调用本地代码直到本地代码返回, 非常容易出现假挂死的问题。
本章就是要讲解异步安排耗时任务, 提高解决问题效率的方法。
界面调用耗时操作的例子:
当GUI调用一个复杂的后台操作时, 如果按照普通方式组织代码, 则GUI会阻塞,知道后台操作完成. 这样GUI会完全假死——点击和拖动界面, 将没有任何响应。直到后台处理完毕。
解决方法:
1. 将耗时操作作为独立的线程启动.
2. 独立后台线程中, 一方面调用后台事物处理, 另一方面, 处理完毕后, 更新GUI线程