多线程-如何用多线程去并行传输文件

本文探讨了在传输大型文件时,串行传输的低效问题,并介绍了如何通过多线程实现文件的并行传输以提高效率。利用RandomAccessFile类,每个线程可以从文件的不同位置开始读写,达到并行传输的效果。
摘要由CSDN通过智能技术生成

在我们学习IO流时,我们对文件进行传输,其实都是使用的串行传输方式,这种传输方式在传输小文件时性能还是我们可以接受的,但是在传输超大型文件时,这种串行的传输方式就会变得非常低效,因为只有一个线程去抢夺CPU的执行权,其占用的执行时间是非常少的,当我们采用多线程时,其相对的占用CPU执行时间的百分比会提高,也就是CPU会花费更多时间去进行文件传输;

如何进行并行传输:

在IO流中,有一个RandomAccessFile类,我们用它进行文件传输。这个类的优点是可以在任何位置开始读写操作,比如一个4G大小的文件,我们准备使用四个线程对它进行copy,那么thread1可以从0号字节开始,thread2可以从1G字节处开始,以此类推。这样,在多个线程运行时,都从各自的mark位置开始写,互不影响,这样就达到了并行传输的目的;

代码实现:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

class ThreadDemo extends Thread{
   

    private RandomAccessFile read=null;
    private RandomAccessFile write=null;
    private long start;
    private long end;
    private String srcPath;
    private String DestPath;
    ThreadDemo(long start,long end,String srcPath,String DestPath){
   
        this.start=start;
        this.end=end;
        this.srcPath=srcPath;
        this.DestPath=DestPath;
    }
    @Override
    public void run() {
   
        try {
   
            this.read=new RandomAccessFile(srcPath,"r");
            thi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值