惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
H
Hacker News: Front Page
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cisco Blogs
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
AWS News Blog
AWS News Blog
Spread Privacy
Spread Privacy
S
Schneier on Security
The Hacker News
The Hacker News
Cyberwarzone
Cyberwarzone
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Tailwind CSS Blog
S
Secure Thoughts
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
Google Online Security Blog
Google Online Security Blog
L
LangChain Blog
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
Hacker News: Ask HN
Hacker News: Ask HN
www.infosecurity-magazine.com
www.infosecurity-magazine.com
有赞技术团队
有赞技术团队
P
Privacy International News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Announcements
Recent Announcements
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
Recorded Future
Recorded Future
The Last Watchdog
The Last Watchdog
G
Google Developers Blog
T
Threatpost
小众软件
小众软件
S
Securelist
Recent Commits to openclaw:main
Recent Commits to openclaw:main
O
OpenAI News

博客园 - 秋天的菠菜

大学计算机基础实验 2013年信1204-1-2班小学期<程序设计技能训练>作品 C++程序设计(第2版)课后习题答案--第14章 C++程序设计(第2版)课后习题答案--第12章 C++程序设计(第2版)课后习题答案--第13章 C++程序设计(第2版)课后习题答案--第11章 C++程序设计(第2版)课后习题答案--第8章 C++程序设计(第2版)课后习题答案--第4章 关于指针的经典例题 第一门编程语言选谁?(转) C语言程序设计实验指导书 寂寞让生命如此美丽 循环结构经典程序 C语言初学者最容易犯的错误 正则表达式 用脚本类IDS抵御针对WEB的攻击 java实验一 方法和构造方法 java实验二 类和对象 java实验四 面向对象的综合应用 java实验三 类的继承与多态
Java多线程读文件比单线程提高效率的实例
秋天的菠菜 · 2012-12-04 · via 博客园 - 秋天的菠菜

假设有两个文本文件Arrays-1.txt和Arrays-2.txt,内容格式如下:

1

2

3

4

.

.

.

用单线程分别读这两个文件并求和,花费时间time1;用两个线程同时读这两个文件并求和,花费时间time2;结果显示:time1>time2,因此说明多线程可以提高效率.测试计算机配置:双核Intel Core i3 cpu550,4G RAM

View Code

 1 import java.io.*;
 2 public class ThreadsSum6{
 3     public static void main(String[] args) throws IOException {
 4        String str;
 5        long sum1=0;
 6        long start = System.currentTimeMillis();
 7        FileReader fr=new FileReader("arrays-1.txt");
 8        //建立文件输入流
 9        BufferedReader br=new BufferedReader(fr);
10        //建立缓冲输入流
11 
12        while ((str=br.readLine())!=null) {
13              sum1+=Integer.parseInt(str);
14        }
15        fr=new FileReader("arrays-2.txt");
16        br=new BufferedReader(fr);
17        while ((str=br.readLine())!=null) {
18              sum1+=Integer.parseInt(str);
19        }
20        fr.close();
21        long end = System.currentTimeMillis();
22        System.out.println("sum1="+sum1);
23        System.out.println("time1="+(end - start));
24 
25        start = System.currentTimeMillis();
26        ReadFileThread th1=new ReadFileThread("arrays-1.txt");
27        ReadFileThread th2=new ReadFileThread("arrays-2.txt");
28        th1.start();
29        th2.start();
30        try{//等待线程结束
31         th1.join();
32         th2.join();
33        }catch(Exception e){}
34        long sum2=th1.getSum()+th2.getSum();
35        end = System.currentTimeMillis();
36 
37        System.out.println("sum2="+sum2);
38        System.out.println("time2="+(end - start));
39    }
40 }
41 class ReadFileThread extends Thread{
42     long sum=0;
43     FileReader fr;
44     BufferedReader br;
45     String str;
46     public ReadFileThread(String fileName){
47         try{
48             fr=new FileReader(fileName);
49             //建立文件输入流
50             br=new BufferedReader(fr);
51             //建立缓冲输入流
52         }
53         catch(Exception e){System.out.println("error1");}
54     }
55     public void run(){
56         try{
57              while((str=br.readLine())!=null) {
58                 sum+=Integer.parseInt(str);
59              }
60              fr.close();                
61         }
62         catch(Exception e){System.out.println("error2");}
63     }
64     long getSum(){
65         return sum;
66     }
67 }