线程突然停止不动了,求助啊啊啊啊啊啊

SONAIS 发布于 2012/04/28 15:50
阅读 580
收藏 0

我用多线程下载文件的时候,有的线程突然就停止不动了,而且每次都会停止,这是为什么?

以下是问题补充:

@SONAIS:private class DownLoadChild extends Thread{ private static final int bufsize=1024*5; int downsize; int startposition; int curposition; int endposition; private File file; private boolean finished=false; private boolean iscancel=false; URL url; public DownLoadChild(URL url,File file,int start,int end){ this.url=url; this.file=file; startposition=start; curposition=start; endposition=end; } public void run(){ BufferedInputStream bis = null; RandomAccessFile fos = null; byte[] buf = new byte[bufsize]; URLConnection con = null; try{ con = url.openConnection(); con.setAllowUserInteraction(true); //设置当前线程下载的起点,终点 con.setRequestProperty("Range", "bytes=" + startposition + "-" + endposition); //使用java中的RandomAccessFile 对文件进行随机读写操作 fos = new RandomAccessFile(file, "rw"); //设置开始写文件的位置 fos.seek(startposition); bis = new BufferedInputStream(con.getInputStream()); while (curposition < endposition&&!iscancel) { int len = bis.read(buf, 0, bufsize); if (len == -1) { break; } fos.write(buf, 0, len); curposition = curposition + len; if (curposition > endposition) { downsize+=len - (curposition - endposition) + 1; } else { downsize+=len; } } //下载完成设为true this.finished = true; bis.close(); fos.close(); }catch (IOException e) { } } public boolean isFinished(){ return finished; } public void Cancel(){ this.iscancel=true; } public int getDownSize(){ return downsize; } } (2012/04/29 09:04)
加载中
0
freish
freish
没读完,blocking?
SONAIS
SONAIS
线程会自己阻塞吗?
0
恋恋美食
恋恋美食

看不懂问题,帮不了你。

我想你该把操作步骤,以及问题现象描述一下吧

SONAIS
SONAIS
线程是停在while里的
SONAIS
SONAIS
当线程运行到while的时候,就循环下载文件直到文件下载完,可是会突然在while停住不动
0
Monkey
Monkey
调试,多加log,性能分析工具。总有一款符合你。
0
乱世键客
乱世键客
jstack & visualvm
0
恋恋美食
恋恋美食

泛泛的问,得到总是泛泛的回答。

这里不缺热心的人,只要你的问题提的好,总能给你点帮助。

哎。。。

返回顶部
顶部