首页 > 代码库 > 实现多线程的同时复制(三个线程同时复制)

实现多线程的同时复制(三个线程同时复制)

 1 package com.threadcopyfile; 2  3 /** 4  * @author lisj 5  * 实现多线程的同时复制 6  * 调用多个线程同时复制各自的模块 7  */ 8 public class threadCopy { 9     10     11     public static void main (String args[]){12         13         ThreadCopyFile a=new ThreadCopyFile(1);    //实例化多个线程14         ThreadCopyFile b=new ThreadCopyFile(2);15         ThreadCopyFile c=new ThreadCopyFile(3);16         Thread down1 = new Thread(a);17         down1.start();            //启动线程1,2,318         Thread down2 = new Thread(b);19         down2.start();            //20         Thread down3 = new Thread(c);21         down3.start();22             23     }24     25 }
 1 package com.threadcopyfile; 2  3 import java.io.File; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 6  7 /** 8  * @author lisj 9  * 实现复制功能10  * 当线程调用的时候开始复制11  */12 public class ThreadCopyFile extends Thread{13 14     int i;    //定义全局变量i,识别复制的模块数15     16     ThreadCopyFile(int i)17     {18         this.i=i;19     }20     21     22 /**23  * 文件复制函数24  * 利用RandomAccessFile类实现文件的读和写25  * 实现复制文件的功能26  */27  public void run() {28       29           System.out.println("线程"+i+"运行中。。。");30     31           File ofile=new File("e:/java乱码处理.txt");    32           File nfile=new File("e:/456.txt");    //定义目的路径以及文件名33             34             try {35                 36                 RandomAccessFile in=new RandomAccessFile(ofile,"rw"); 37                             38                 long length=in.length()/3;39                 40                 RandomAccessFile out=new RandomAccessFile(nfile,"rw");41                 int count=0;42                 int len=0;43                 byte[] b= new byte[2048];44                 in.seek(length*(i-1));    //设置读文件偏移位置45                 out.seek(length*(i-1)); //设置写文件偏移位置46                 while(((len=in.read(b))!=-1)&&(count<=(int)length)){    //读取文件内容设置写文件停止条件47                     48                         out.write(b, 0, len);    49                         count=count+len;50                         51                     }//写出文件内容52                         53             } catch (IOException e) {54                 55                 e.printStackTrace();56             }57             58             System.out.println("线程"+i+"复制完成!");59         }60   61     }