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

 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,3
18         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     }

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

时间: 2024-10-15 08:22:13

实现多线程的同时复制(三个线程同时复制)的相关文章

深入MySQL复制(三):半同步复制

1.半同步复制 半同步复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html 默认情况下,MySQL的复制是异步的,master将新生成的binlog发送给各slave后,无需等待slave的ack回复(slave将接收到的binlog写进relay log后才会回复ack),直接就认为这次DDL/DML成功了. 半同步复制(semi-synchronous replication)是指master在将新生

iOS开发——多线程OC篇&amp;(三)线程安全

线程安全 一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 问题代码: 1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase. All rights reserved

Java 多线程详解(三)------线程的同步

Java 多线程详解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html Java 多线程详解(二)------如何创建进程和线程:http://www.cnblogs.com/ysocean/p/6883491.html 介绍完如何创建进程以及线程了,那么我们接着来看一个实例: 利用多线程模拟 3 个窗口卖票 第一种方法:继承 Thread 类 创建窗口类 TicketSell package com.ys.thread; p

多线程学习-基础(三)线程的调度

一.线程调度(1)调整线程的优先级Java线程有优先级,优先级高的线程会获得较多的执行机会,但是只是抢占cpu使用权的机会增加了,并不意味着就一定先执行.Java线程的优先级用整数来表示,取值范围为:1~10 ,Thread有以下3个静态常量:static int MAX_PRIORITY线程可以具有最高优先级 取值:10static int MIN_PRIORITY线程可以具有最低优先级,取值:1static int NORM_PRIORITY分配给线程的默认优先级,取值:5 Thread类的

C#多线程编程系列(三)- 线程同步

目录 1.1 简介 1.2 执行基本原子操作 1.3 使用Mutex类 1.4 使用SemaphoreSlim类 1.5 使用AutoResetEvent类 1.6 使用ManualResetEventSlim类 1.7 使用CountDownEvent类 1.8 使用Barrier类 1.9 使用ReaderWriterLockSlim类 1.10 使用SpinWait类 参考书籍 笔者水平有限,如果错误欢迎各位批评指正! 1.1 简介 本章介绍在C#中实现线程同步的几种方法.因为多个线程同时

Java 多线程详解(五)------线程的声明周期

Java 多线程详解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html Java 多线程详解(二)------如何创建进程和线程:http://www.cnblogs.com/ysocean/p/6883491.html Java 多线程详解(三)------线程的同步:http://www.cnblogs.com/ysocean/p/6883729.html Java 多线程详解(四)------生产者和消费者:http:/

Java 多线程(三) 线程的生命周期及优先级

Java 多线程(三) 线程的生命周期及优先级 线程的生命周期 线程的生命周期:一个线程从创建到消亡的过程. 如下图,表示线程生命周期中的各个状态: 线程的生命周期可以分为四个状态: 1.创建状态: 当用new操作符创建一个新的线程对象时,该线程处于创建状态. 处于创建状态的线程只是一个空的线程对象,系统不为它分配资源. 2.可运行状态: 执行线程的start()方法将为线程分配必须的系统资源,安排其运行,并调用线程体——run()方法,这样就使得该线程处于可运行状态(Runnable). 这一

java多线程三之线程协作与通信实例

多线程的难点主要就是多线程通信协作这一块了,前面笔记二中提到了常见的同步方法,这里主要是进行实例学习了,今天总结了一下3个实例: 1.银行存款与提款多线程实现,使用Lock锁和条件Condition.     附加 : 用监视器进行线程间通信 2.生产者消费者实现,使用LinkedList自写缓冲区. 3.多线程之阻塞队列学习,用阻塞队列快速实现生产者消费者模型.    附加:用布尔变量关闭线程        在三种线程同步方法中,我们这里的实例用Lock锁来实现变量同步,因为它比较灵活直观.

Java多线程开启三个线程输出ABC10次

最近学多线程,搜了一下,满屏幕的问题都是类似标题那样的,所以就拿这个当开始吧,自己试了一下手, 多次把电脑CPU跑到100%,终于还是写出来了,大体思路为: 声明一个变量,标记三个线程该哪个线程输出,每次输出将该变量+1,判断方式为 变量对3的余数,如果为1-A,2-B, 3-C 1 public class ABC { 2 3 private static int mark = 0; 4 5 private static Object obj = new Object(); 6 7 publi