java多线程下载的问题? 看你的代码,每个线程执行一次都会sleep(1000),第一个线程启动后,在启动第二个线程的过程中会先sleep,而此时第一个线程正在下载,开始的时候当然肯定不会是同时的了,不过等所有线程都启动后,就是同时下载了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看你的代码应该没问题,请问,System.out.println("Thread-"+id+" started.")你的这个打印,第2个线程启动是不是都在第一个线程下载结束才执行呢? 我将sleep注释掉之后,还是一样的。并没有同时进行。在两个线程执行完:System.out.println("Thread-"+id+" started.");之后,第一个线程先下载50%,第二个线程才启动下载。是不是因为两个线程同时往同一个文件(RandomAccessFile)写内容,会引起阻塞啊? 是啊!有时是在第一个线程执行的快结束的时候才开始下载。我测试用的下载的文件有100M左右。每次都是这样。用5个线程的时候,也是一个一个地下载。“rwd” 打开以便读取和写入,对于 “rw”,还要求对文件内容的每个更新都同步写入到底层存储设备,估计是这个同步导致的,你使用“rw”模式试试 是啊!有时是在第一个线程执行的快结束的时候才开始下载。我测试用的下载的文件有100M左右。每次都是这样。用5个线程的时候,也是一个一个地下载。“rwd” 打开以便读取和写入,对于 “rw”,还要求对文件内容的每个更新都同步写入到底层存储设备,估计是这个同步导致的,你使用“rw”模式试试谢谢你的回答,我已经找到了原因了。应该是InputStream引起的阻塞。添加下面的代码之后就OK了。HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Range", "bytes="+startPos+"-"+(startPos+currentSize-1)); 抓取论坛内容时要求先登录的问题 用java写ultraedit 请教JAVA线程与SWING的问题 Mysql数据库出现如下异常 java里面移出数组元素怎么写? 请教几个关于JAVA的菜鸟级问题 我这样配置了java的环境,怎么就不对呢,大虾帮看看 哪位老兄做过在指定坐标位置(x,y)画点或者用图片代替点的applet Java 如何实现加密rar 文件的解压操作 字符串的快速解析 这样的正则表达式如何写 java编程思想中的一个正则表达式
我将sleep注释掉之后,还是一样的。并没有同时进行。在两个线程执行完:
System.out.println("Thread-"+id+" started.");
之后,第一个线程先下载50%,第二个线程才启动下载。是不是因为两个线程同时往同一个文件(RandomAccessFile)写内容,会引起阻塞啊?
是啊!有时是在第一个线程执行的快结束的时候才开始下载。我测试用的下载的文件有100M左右。每次都是这样。用5个线程的时候,也是一个一个地下载。“rwd” 打开以便读取和写入,对于 “rw”,还要求对文件内容的每个更新都同步写入到底层存储设备,估计是这个同步导致的,你使用“rw”模式试试
是啊!有时是在第一个线程执行的快结束的时候才开始下载。我测试用的下载的文件有100M左右。每次都是这样。用5个线程的时候,也是一个一个地下载。“rwd” 打开以便读取和写入,对于 “rw”,还要求对文件内容的每个更新都同步写入到底层存储设备,估计是这个同步导致的,你使用“rw”模式试试谢谢你的回答,我已经找到了原因了。应该是InputStream引起的阻塞。添加下面的代码之后就OK了。
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Range", "bytes="+startPos+"-"+(startPos+currentSize-1));