java 图片 下载 线程-java 下载图片线程卡死问题,是什么原因, 怎么解决,谢谢

问题描述

java 下载图片线程卡死问题,是什么原因, 怎么解决,谢谢
 public static void downLoadImg(String imgName, String imgUrl, String fileURL) throws Exception{
        BufferedInputStream in = null;
        BufferedOutputStream out = null;
        try {
            // 创建流
            System.out.println("imgUrl:" + imgUrl);
            in = new BufferedInputStream( new URL(imgUrl).openStream());
            // 生成图片名
            int index = imgUrl.lastIndexOf("/");
            String sName = imgName == null ? imgUrl.substring(index + 1, imgUrl.length()) : imgName;
            File fir = new File(fileURL);
            if (!fir.exists()) {
                fir.mkdirs();
            }
            // 存放地址
            File img = new File(fileURL + sName);
            // 生成图片
            out = new BufferedOutputStream( new FileOutputStream(img));
            byte[] buf = new byte[2048];
            int length = in.read(buf);
            while (length != -1) {
                out.write(buf, 0, length);
                length = in.read(buf);//在一个下载图片的线程有的时候读取到这里就不动了 ,这种问题应该怎么解决
            }
        } catch (Exception e) {
            System.out.println("下载图片异常");
            e.printStackTrace();
            throw new RuntimeException("下载图片异常");
        } finally{
            try {
                if( in != null){
                    in.close();
                }
                if(out != null){
                    out.flush();
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

解决方案

打印一些信息调试一个那个地方,看有没有死循环。

解决方案二:

没设超时时间吧,内容不够十个字

解决方案三:

简单测试了一下么有问题啊。检查下图片路径。

解决方案四:

这是线程调试的地方::::
// 存放地址
File img = new File(fileURL + sName);
// 生成图片
out = new BufferedOutputStream( new FileOutputStream(img));
byte[] buf = new byte[2048];
int length = in.read(buf);
System.out.println(111111111);
while (length != -1) {
System.out.println(222222);
out.write(buf, 0, length);
System.out.println(3333333);
length = in.read(buf);//在一个下载图片的线程有的时候读取到这里就不动了 ,这种问题应该怎么解决
System.out.println(4444444);
}
System.out.println(55555555);

    打印日志:

111111111
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333
4444444
222222
3333333 最后停的地方。。

解决方案五:

多大的图片呀?理论上不会这样吧

时间: 2024-08-29 07:42:45

java 图片 下载 线程-java 下载图片线程卡死问题,是什么原因, 怎么解决,谢谢的相关文章

java实现文件上传下载和图片压缩代码示例_java

分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:) 复制代码 代码如下: package com.eabax.plugin.yundada.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.

Java如何从服务器中下载图片_java

本文实例为大家分享了Java服务器中下载图片的方法,供大家参考,具体内容如下 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import org.apache.commons.io.IOUtils; /** * 从服务器中下载图片 * * @param fileName

android异步图片加载三之handler+线程池+消息队列模式+缓存

http://blog.csdn.net/soesa/article/details/7787922 假象现在有这样一个需求:       一个微博客户端或者多媒体客户端需要从服务端拉取一些数据,该数据中包含了很多图片,如果不用异步加载方式,可能会使主线程阻塞导致ANR异常,但是异步加载后如果每次都通过网络去下载图片,性能上会差很多,而且也会浪费流量,导致用户的不满,故现在增加一个缓存用来存储图片,缓存中包含内存存储和sdcard存储.先从缓存中去,在缓存中先从内存中取出,如果内存中没有再从sd

java 多线程-为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开

问题描述 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开?? package com.miuitust.mutilethread; import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; impor

【JAVA应用】多线程断点下载

问题:多线程下载的好处? 多线程下载比单线程下载快,主要的原因是采用多线程下载,可以抢占更多的服务器资源.抢占Cpu的处理空间,实现更快的下载速度 问题:多线程下载位置的确定? 开启N条线程下载文件,假设文件大小为buf,那么每条线程的下载量为: buf%N==0?buf/N:buf/N+1; 那么,每一条线程应该从网络文件的什么位置开始下载?? 假设线程id号threadid为0,1,2,每一条线程下载的数据量为block=4 第一个文件从threadid*block开始下载,结束位置(thr

编程-java菜鸟程序员提问:求大神给我说说线程在什么场景下用,以及多线程工作原理。谢谢

问题描述 java菜鸟程序员提问:求大神给我说说线程在什么场景下用,以及多线程工作原理.谢谢 现在java线程编程应用广泛吗?哪些时候适合或必须要用多多线程编程呢?多线程的工作原理是怎样的呢?求大神们指导指导,谢了! 解决方案 (1)线程的工作场景主要有两条: 一个是并发操作,避免阻塞和更有效利用资源.典型的例子有:在长时间工作的程序中使用工作线程避免界面失去响应.在网络下载程序中,使用多个线程提高对网络的使用效率,更快下载文件. 一个是并行,线程是处理器调度的最小单位.如果你的计算机配置了多个

android怎么从服务器的一个存放图片的文件夹中下载其中所有的图片,已知文件夹的url

问题描述 android怎么从服务器的一个存放图片的文件夹中下载其中所有的图片,已知文件夹的url android怎么从服务器的一个存放图片的文件夹中下载其中所有的图片,已知文件夹的url 解决方案 只要这个url和图片信息(比如名字)能组成有效的url就行了,然后再返回一个图片的名字列表,遍历下载就行了 解决方案二: QT下实现将图片从一个文件拷贝到另一个文件夹把存储在数据库的图片导入到一个文件夹 解决方案三: 考慮安裝一下 ""抓圖神器"" 這個APP應該就可以

线程通信-Java socket通信 使用jconsole监控发现线程数不断增加

问题描述 Java socket通信 使用jconsole监控发现线程数不断增加 Java socket 使用线程通信,作为接收方每接收一个交易信息,使用jsonsole监控线程发现线程数量增加22个左右,经生产环境运行结果,当已启动线程总数达到2600多时 tomcat出现类似于假死的状况,不再接收任何交易信息.目前正在使用系统定时任务每天定时重启(每日交易量在70-80左右),求大手帮我分析下,现在附上图片和部分代码.jsonsole监控图:部分代码;public class SimpleS

笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]

前言      首次在博客园首页发布文章,一直把自己的文章定位在新手区,也一直这样认为自己的.这段时间看博客园首页挺多的,说实在的有些文章很一般但是得到更多朋友以及高手的指点,所以鼓起勇气把自己花了几天时间改版的图片下载器贴上来,希望能在程序的性能上以及适用上得到更多的宝贵的建议!先谢谢每位看客赏光了 : )   感谢      MSDN     MSDN上异步网络编程的例子是我0.2版的核心所在   运行环境      .NET Framework2.0   开发工具      Microso

Java将网络地址对应的图片转成本地的图片

 只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘了就无从下手! 示例创建HttpURLConnection网络连接,并将这个连接获得的网络数据流写道本地磁盘!   示例代码如下: Java代码   package imageView;   import java.io.ByteArrayOutputStream;   import java.io.File;   import java.io