背景
日常测试中,程序加载数据文件,时常出现页面卡顿、程序无响应、程序崩溃等情况,排查发现与程序进程中线程的同步异步有关。
案例描述
问题描述:
- 使用文件查看器打开压缩文件时,出现程序无响应问题。
问题原因:
- 1、经排查发现,在文件查看器打开压缩文件时,会对压缩文件中所有资源进行遍历,在遍历过程中某个资源解析出错,导致任务阻塞。
- 2、进一步了解后发现,开发在实现功能时,将资源遍历线程放在了主线程中进行同步加载,所以资源遍历线程阻塞时,导致主线程无响应。
解决方案:
- 1、对资源遍历线程阻塞场景添加保护,保证遍历线程正常执行;
- 2、将资源遍历压缩文件线程从主线程放到子线程进行,形成异步加载,避免单个线程失败导致主线程直接挂掉,影响程序使用;
通过以上案例可以看出,逻辑实现中使用同步或异步线程,对程序的效率提升以及主线程的保护是非常重要的。
延伸思考
1、 开发层面对线程的使用:
- 使用线程的场景:
- ① 移动APP程序模块需要加载框架+内容时,使用线程更为高效;
- ② 优化程序性能时,更偏向使用线程;
- 线程同步异步在程序中的应用