java多线程处理
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多线程处理的更多相关文章
- Java多线程处理List数据
实例1: 解决问题:如何让n个线程顺序遍历含有n个元素的List集合 import java.util.ArrayList; import java.util.List; import org.apa ...
- java多线程处理任务
最近用到使用多线程处理给用户发送站内消息的问题,想到使用java自带的线程池进行处理这个问题,具体如下: 定义一个线程: package com.qlwb.util; import org.apach ...
- Java 多线程处理[全]
http://blog.csdn.net/ghsau/article/details/7421217 Java线程(一):线程安全与不安全 http://blog.csdn.net/ghsau/art ...
- Java多线程处理某个线程超时的问题
ExecutorService exec = Executors.newFixedThreadPool(4); List<Future<Integer>> futures = ...
- java多线程处理导入数据拆分List集合 同步处理插入数据
原文:https://www.2cto.com/kf/201612/581174.html import org.apache.log4j.Logger; import org.apache.poi. ...
- java 多线程处理一个list的集合
原文:http://blog.csdn.net/jenny8080/article/details/52100312 import java.util.ArrayList; import java.u ...
- Java多线程处理任务(摘抄)
很多时候,我们需要对一个庞大的队列或者二维数组进行处理.这些处理可能是循环的,比如给一个excel多个sheet的联系人列表发邮件.很幼稚的方法就是用一个或者两个FOR循环搞定,对于庞大的数据有得让你 ...
- java多线程处理问题
今天碰到个以前的线上bug需要处理下:问题是这样的,我们的app里面有个点赞的功能,点赞完后显示点赞人列表以及点赞数量,但是数量现在总是不准确.之后查看代码,发现点赞时候只是简单的向数据库添加了一条点 ...
- Java以基础类库
Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...
随机推荐
- centos安装sublime
在官网下载,tarball 下载链接 http://www.sublimetext.com/3 提示信息: Ubuntu 64 bit - also available as a ...
- LeetCode-Subsets
Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must not ...
- English—句子
1. So far so good. 目前为止,一切都好. 2. Be my guest. 请便.别客气. 3. You're the boss. 听你的. 4.I've heard ...
- js动态更改对象属性值的方法
下面代码,替换属性名称包含date的属性中的T为空格. for (var o in data) { //console.info(eval("d ...
- Discuz模拟批量上传附件发帖
简介 对于很多用discuz做资源下载站来说,一个个上传附件,发帖是很繁琐的过程.如果需要批量上传附件发帖,就需要去模拟discuz 上传附件的流程. 模拟上传 discuz 附件逻辑 dz附件储存在 ...
- C#:调用webservice时提示对操作的回复消息正文进行反序列化时出错
主要原因webservice返回值的长度超过readerQuotas中的了maxStringContentLength值,造成返回值截断,不完整,反序列化时出错. <readerQuotas m ...
- python基础知识点整理
序列 描述 sequence(序列)是一组有顺序的元素的集合.序列可以包含一个或多个元素,也可以没有任何元素.我们之前所说的基本数据类型,都可以作为序列的元素. 序列有两种:tuple(定值表: 也有 ...
- Lab_6_SysOps_AutoScaling_Linux_v2.5
System Operations - Lab 6: Using Amazon Elastic Load Balancer (Linux) - 2.5 ======================== ...
- Visual Studio并发Qpar优化效果
IOCP客户端的connect线程FOR循环中添加强制并行,1万/S并发connect+send+recv+close,任务管理器使用从60%降到20%. Visual Studio性能监控CPU使用 ...
- Sublime Text 2/3安装使用及常用插件
一.介绍 Sublime Text 是一款较新的编辑器,它轻量.简洁.高效,良好的扩展性以及跨平台等特性,使得越来越多的开发人员喜爱.它是一款收费的商业软件,但可以免费无限制无限期的试用,只会偶尔提醒 ...