图片高效率下载
场景描述:我有一个消息中间件一直给我推送消息 每秒的数据量可以达到200条左右数据,然后这些数据是图片的url地址,然后我要尽快的去下载这些图片。
我现在的做法是一旦接受到消息 拿到图片的地址后就把下载图片的任务往线程池里面,然后用的线程池刚开始是用的缓冲线程池,但是用的过程中发现一个问题,就是多个线程一起去下图片 立马就把内存撑爆了 会导致内存溢出,然后我就加大了内存 ,这时候又发现个问题,因为用的是缓存线程,执行过程中报创建线程失败,网上搜了下说如果jvm的内存调的越大,则可以分配的线程就越少,所以导致了创建失败。没办法换成了一个固定线程池,然后发现固定线程池里面的队列积累了很多数据,这样就有很大的延时了,后来我就一点一点的在调固定线程池的大小 和内存的大小(如果固定线程池的线程过大,则多个线程一起下载图片,一下又会把内存撑爆,所以调内存高,但是内存一高 又报创建线程失败 导致程序卡死)好坑爹啊。现在好无奈,把固定线程池调到了500大小,但是里面积累的数据好的 。。。 求大神有什么好的解决方案啊