面试官:公司项目中Java的多线程一般用在哪些场景?
假设有个请求,这个请求服务端的处理需要执行3个很缓慢的IO操作(比
如数据库查询或文件查询),那么正常的顺序可能是(括号里面代表执行
时间):
1. 读取文件1 (10ms)
2. 处理1的数据(1ms)
3. 读取文件2 (10ms)
4. 处理2的数据(1ms)
5. 读取文件3 (10ms)
6. 处理3的数据(1ms)
7. 整合1、2、3的数据结果 (1ms)
单线程总共就需要34ms。
那如果你在这个请求内,把ab、cd、ef分别分给3个线程去做,就只需要
12ms了。
所以多线程不是没怎么用,而是,你平常要善于发现一些可优化的点。然
后评估方案是否应该使用。假设还是上面那个相同的问题:但是每个步骤
的执行时间不一样了。
1. 读取文件1 (1ms)
2. 处理1的数据(1ms)
3. 读取文件2 (1ms)
4. 处理2的数据(1ms)
5. 读取文件3 (28ms)