Java中的线程

Java中的线程

       java中,为了提高程序对硬件资源的利用率,合理的使用多线程可以并行的处理多项任务,避免了不相关任务之间的等待,在执行这个任务的过程中,其他并行的任务也可以同时执行,所以用到了多线程,一个进程可以有多个线程。线程的实现方式有两种,一是继承Thread父类,二是实现Runnable接口,下面是分别使用这两种方式实现线程进行文件拷贝的代码。

继承Thread类的类:

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

 

public class CopyByThread extends Thread{

       private String source;

       private String target;

 

       public String getSource() {

              return source;

       }

 

       public void setSource(String source) {

              this.source = source;

       }

 

       public String getTarget() {

              return target;

       }

 

       public void setTarget(String target) {

              this.target = target;

       }

 

       @Override

       public void run() {

              System.out.println(source+"拷贝开始");

              try {

                     BufferedInputStream bis=new BufferedInputStream(new FileInputStream(source));

                     BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(target));

                     byte[] size=new byte[1024];

                     int flag=-1;

                     while((flag=bis.read(size))!=-1){

                            bos.write(flag);

                     }

                     bis.close();

                     bos.close();

              } catch (Exception e) {

                     System.out.println(source+"拷贝失败");

                     e.printStackTrace();

              }

              System.out.println(source+"拷贝结束--------------");

       }

}

实现Runnable接口的类:

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

public class CopyThread implements Runnable{

       private String source;

       private String target;

       public String getSource() {

              return source;

       }

       public void setSource(String source) {

              this.source = source;

       }

       public String getTarget() {

              return target;

       }

       public void setTarget(String target) {

              this.target = target;

       }

       @Override

       public void run() {

              System.out.println(source+"拷贝开始");

              try {

                     BufferedInputStream bis=new BufferedInputStream(new FileInputStream(source));

                     BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(target));

                     byte[] size=new byte[1024];

                     int flag=-1;

                     while((flag=bis.read(size))!=-1){

                            bos.write(flag);

                     }

                     bis.close();

                     bos.close();

              } catch (Exception e) {

                     e.printStackTrace();

              }

              System.out.println(source+"拷贝结束--------------");

       }

 

}

以下是主类Main

public class Main {

       public static void main(String[] args) {

              String urlsource="E:/test/testone/";

              String urltarget="E:/test/testtwo/";

              for(int i=1;i<5;i++){

              CopyByThread threaddd=new CopyByThread();

              threaddd.setSource(urlsource+i+".docx");

              threaddd.setTarget(urltarget+(i+2)+".docx");

              threaddd.start();

              }

       }

       public static void main1(String[] args) {

              String urlsource="E:/test/testone/";

              String urltarget="E:/test/testtwo/";

              for(int i=1;i<5;i++){

              CopyThread thread=new CopyThread();

              thread.setSource(urlsource+i+".docx");

              thread.setTarget(urltarget+i+".docx");

              new Thread(thread).start();

              }

       }

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值