实现多线程下载同一个文件的时候,每个线程只下载文件的一部分,各自新建一个RandomAccessFile对象向同一个文件里写数据,这时每个线程写入的数据没有交集,是否需要加锁同步?线程对象的run()方法的伪代码如下:
public class DownloadThread extends Thread{        @Override
        public void run() {
            RandomAccessFile randomAccessFile = new RandomAccessFile("abc.exe", "rwd");
            randomAccessFile.seek(position); //每个线程的position都不一样
            randomAccessFile.write(data, 0, length);
        }
    }

解决方案 »

  1.   

    try...
      

  2.   

    我看到网上一些实现多线程断点续传的demo写RandomAccessFile的时候不加锁同步,所以就有了这个疑问。
      

  3.   

    我看到网上一些实现多线程断点续传的demo写RandomAccessFile的时候不加锁同步,所以就有了这个疑问。
    那就表示非必需咯
      

  4.   

    如果你是对文件的不同部分无交错地进行操作就不用加锁了,你可以看看个中Buffer的用法,另外还有专门控制并发的读写锁。