1、工作中遇到的业务处理需要:
例:
生产问题:生产上一个常用的会话接口,此接口内集成了5个外部接口能力(python的,Java的,其中每个接口基本耗时2~3秒),原有会话接口里是依次去调用的,
这就导致用户体验很差,因为2乘5也就是10秒,也就是说会话接口耗时10秒起步;
解决方案:将原来的依次调用,改为多线程异步调用,等所有线程的调用都处理结束后,再去统一处理封装数据,因为多线程异步的原因,一个接口调用耗时2~3秒,
则改造后会话接口耗时2秒起步。
2、需要拥有的技能:
1、知道常用的线程池;
2、知道如何等待线程池所有线程执行结束
3、知道如何设置线程超时时间,避免生产运行中线程僵死导致资源占用,造成死锁
3、以下讲解上述三点:
使用ExecutorService线程池演示;
1、使用:Future.get() 等待线程执行结束,设置超时时间:future.get(4, TimeUnit.SECONDS)
Future简单来说就是对具体的Runnable和Callable任务执行结果进行任务取消、任