package com.copyFile;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

//50090
//41896
//10303
//10131
public class CopyFile {

private static String filePath1 = "E:\\test\\yuanshi.txt";
private static String filePath2 = "E:\\test\\mubiao\\";
private static ArrayList<String> filelist = new ArrayList<String>();
private static ArrayList<String> contextList22 = new ArrayList<String>();
private static ArrayList<ArrayList<String>> mubiaoContext = new ArrayList<ArrayList<String>>();
/**
* @param args
* 作者: liu.yj
* 时间: Jun 1, 2016
*/
public static void main(String[] args) {
System.out.println("==========执行耗时startData:"+System.currentTimeMillis());
getFiles(filePath2);
readLineFile();
//findContext(0);
execute();
Long endTime = System.currentTimeMillis();
System.out.println("执行耗时:"+(1464834022605L-1464834011597L));
}

public static String readLineFile(){
File file = new File(filePath1);
String lineContext = "";
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
lineContext = tempString;
contextList22.add(lineContext);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return "";
}
/**
* 在文件中查找
*
* 作者: liu.yj
* 时间: Jun 1, 2016
*/
public static void findContext(int index,int stape){
for(int i=index;i<index+stape;i++){
//for(int i=0;i<filelist.size();i++){
find2(filelist.get(i));
}
}
public static void find2(String filePath){
File file = new File(filePath);
Map<String,ArrayList<String>> _map = new HashMap<String,ArrayList<String>>();
ArrayList<String> contextList = new ArrayList<String>();
String lineContext = "";
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
lineContext = tempString;
if(lineContext != null && !"".equals(lineContext)){
String args[] = lineContext.split(" ");
if(contextList22.contains(args[0])){
if(args.length >2){
System.out.println("KEY:\t"+args[0]+"\t值:\t"+args[2]);
}
}
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
//_map.put(filePath, contextList);
mubiaoContext.add(contextList);
}
static void getFiles(String filePath){
File root = new File(filePath);
File[] files = root.listFiles();
for(File file:files){
if(file.isDirectory()){
/*
* 递归调用
*/
getFiles(file.getAbsolutePath());

}else{
filelist.add(file.getAbsolutePath());
//System.out.println("显示"+filePath+"下所有子目录"+file.getAbsolutePath());
}
}
}

public static void execute(){
//创建二十个线程
ExecutorService pool = Executors.newFixedThreadPool(20);
for(int i=0;i<20;i++){
Thread t1 = new MyThread(i*51,51);
pool.execute(t1);
}
// 关闭线程池
pool.shutdown();
}

}
class MyThread extends Thread {
private int countIndex = 0;
private int stape = 0;
public MyThread(int myIndex,int mStape){
countIndex = myIndex;
stape = mStape;
}
@Override
public void run() {
Long startTime = System.currentTimeMillis();
CopyFile.findContext(countIndex,stape);
Long endTime = System.currentTimeMillis();
System.out.println("==========执行耗时:"+endTime);
}
}

java多线程处理的更多相关文章

  1. Java多线程处理List数据

    实例1: 解决问题:如何让n个线程顺序遍历含有n个元素的List集合 import java.util.ArrayList; import java.util.List; import org.apa ...

  2. java多线程处理任务

    最近用到使用多线程处理给用户发送站内消息的问题,想到使用java自带的线程池进行处理这个问题,具体如下: 定义一个线程: package com.qlwb.util; import org.apach ...

  3. Java 多线程处理[全]

    http://blog.csdn.net/ghsau/article/details/7421217 Java线程(一):线程安全与不安全 http://blog.csdn.net/ghsau/art ...

  4. Java多线程处理某个线程超时的问题

    ExecutorService exec = Executors.newFixedThreadPool(4); List<Future<Integer>> futures = ...

  5. java多线程处理导入数据拆分List集合 同步处理插入数据

    原文:https://www.2cto.com/kf/201612/581174.html import org.apache.log4j.Logger; import org.apache.poi. ...

  6. java 多线程处理一个list的集合

    原文:http://blog.csdn.net/jenny8080/article/details/52100312 import java.util.ArrayList; import java.u ...

  7. Java多线程处理任务(摘抄)

    很多时候,我们需要对一个庞大的队列或者二维数组进行处理.这些处理可能是循环的,比如给一个excel多个sheet的联系人列表发邮件.很幼稚的方法就是用一个或者两个FOR循环搞定,对于庞大的数据有得让你 ...

  8. java多线程处理问题

    今天碰到个以前的线上bug需要处理下:问题是这样的,我们的app里面有个点赞的功能,点赞完后显示点赞人列表以及点赞数量,但是数量现在总是不准确.之后查看代码,发现点赞时候只是简单的向数据库添加了一条点 ...

  9. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

随机推荐

  1. Servlet 3.0 异步模式

    Servlet 3.0标准新增了异步处理的支持. 进行异步处理的Servlet和作用于该Servlet的拦截器都必须声明对于异步处理的支持.

  2. @SuppressWarnings("deprecation")

    在Java编译过程中会出现很多警告,有很多是安全的,但是每次编译有很多警告影响我们对error的过滤和修改,我们可以在代码中加上 @SuppressWarnings("XXXX") ...

  3. Unity浅析

    在分析PRISM项目的时候, 发现里面用到了Unity 这个Component, 主要用于依赖注入的.由于对其不熟悉,索性分析了一下,记载在此,以作备忘. 任何事物的出现,总有它独特的原因,Unity ...

  4. LINQ to XML

    void Main() { string path = @"C:\Users\knife\Desktop\test.xml"; XDocument xml = XDocument. ...

  5. Oracle学习笔记(二)

    2.Oracle用户管理 (1)创建用户:create user 用户名 identified by 密码(需要dba权限); sql>create user yzw identified by ...

  6. 使用 openssl 生成证书

    一.openssl 简介 目前最流行的 SSL 密码库工具官网:https://www.openssl.org/source/ 构成部分 密码算法库 密钥和证书封装管理功能 SSL通信API接口 用途 ...

  7. DataSet,DataTable与DataRow的复制方法

    DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个DataTable的数据或者复制另一个DataTabe中的数据 ...

  8. docker网络配置方法总结

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  9. bzoj1091: [SCOI2003]切割多边形

    Description 有一个凸p边形(p<=8),我们希望通过切割得到它.一开始的时候,你有一个n*m的矩形,即它的四角的坐标分别为(0,0), (0,m), (n,0), (n,m).每次你 ...

  10. SQL分页查询

    假如tb_customer表中的数据量非常大,在显示时要分页显示而且每页只显示10条信息.为了效果我们取第三页的数据. 方法一:遍历两次表,取不同的数据. select top 10 * from t ...