项目中多线程灵活使用

最初的时候,很少使用多线程方面的知识,直到这一次在项目中解决一些业务问题,从而运用到多线程的知识,因此便准备记录一下。

项目中大体的业务:

        视踪平台人员检索调用的是海康平台的接口,返回的数据有大图url和目标图url,但是奇葩的是海康返回的图片url是加密的https格式的网络路径,在浏览器中不可以加载,所以项目中页面上显示图片丢失。至此开始寻求解决方案

        1、在html页面<head>头部添加以下标签

可以正常访问,高兴了一波,以为终于解决了问题;可惜的是,因为平台是部署在ie浏览器,这种方法兼容谷歌,ie不行,顿时感觉失了智。

        2、第二种便是从浏览器本身设置,查了一些信息,可以在浏览器中设置,将ssl勾选就可以,但这种方案提出就不行,因为你不可能让你的用户去设置浏览器吧,体验一点都不好,放弃

       3、第三种就是在后端解决了,最初始的思想便是将https的路径先下载生成图片到我们平台的服务器中,将其发布路径以http格式,但是可惜的是,前端需要50条人脸,每条人脸图的数据有俩条https格式的url,粗略的算起来50*2,总共100次将图片写入服务器中,耗时特别的长,总共花费了100多秒,难以忍受,绝对的难以忍受。

针对第三种方案,想到用多线程并发解决问题

因为具体业务不方便透漏,下面代码只是模拟业务的一个demo,大家可以看看

多线程业务类

测试类:

      返回结果:

这是一个最初的模板,我使用thread.join()方法,初衷是为了能够让业务线程全部执行完,才执行。但是这个join方法似乎把100个次线程也设置了,这就导致了没有多线程的特性,还是一个次线程执行完在执行下一个线程,有点失败。

通过CountDownLatch实现主线程阻塞,从而达到业务的需求,具体实现如下:

 测试类:

     返回结果:

完美解决,效率得到显著的提升,帮帮哒 

猜你喜欢

转载自blog.csdn.net/weixin_42558742/article/details/88953346