java利用线程池优化程序
2021-01-07 13:30
标签:回车 throw 举例 ack 按钮 shutdown return www 配置文件 1、提升程序加载速度 2、几种线程的创建方法 3、实用举例【这里实用线程池创建将要被实用的对象,然后被实用的类则实现call方法,返回该类对象】 以上代码service.submit(new ReadConfigFile());种的new ReadConfigFile()是我读取文件的类,在其中实现了call()方法,如下: 注意:每次使用线程池创建的对象时,只需要调用被使用的类的get()方法获取对象,再使用方法即可。 我使用的是读取文档0,2,4,6...偶数行作为按钮的名称,1,3,5..奇数行作为执行路径,根据读取的配置动态创建按钮,及事件,该类略。 java利用线程池优化程序 标签:回车 throw 举例 ack 按钮 shutdown return www 配置文件 原文地址:https://www.cnblogs.com/ciscolee/p/12970949.html//v2.0新增利用线程创建,发现加载更快了
{
// 获取当前程序运行时对象
Runtime run = Runtime.getRuntime();
// 调用垃圾回收机制,以减少内存误差
run.gc();
// 获取当前JVM的空闲内存
long freeMemory = run.freeMemory();
// 系统当前时间
long timePro = System.currentTimeMillis();
ExecutorService service = Executors.newFixedThreadPool(2);
// 线程池创建并执行1000个线程
for (int i = 0; i ) {
try {
service.submit(new ReadConfigFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("使用线程池创建1000个线程所需要占用的内存大小: "
+ (freeMemory - run.freeMemory()));
// 线程池使用完成,关闭线程池
service.shutdown();
System.out.println("使用线程池创建并运行1000个线程需要的时间为: "
+ (System.currentTimeMillis() - timePro));
}//线程池结束
package com.writer;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.concurrent.Callable;
//读取配置文件的类
public class ReadConfigFile implements Callable {
File file = null;
FileInputStream fis = null;
BufferedInputStream bis = null;
public ReadConfigFile() throws IOException{
this.file = new File("C:/menu.txt");
this.fis = new FileInputStream(file);
this.bis = new BufferedInputStream(fis);
}
public String[] getFileContent(){
try{
long begin = System.currentTimeMillis();
byte[] buffer = new byte[1024];
String []result = null;
int cnt = 0;
while((cnt=bis.read(buffer)) != -1) {
String bluck = new String(buffer, 0, cnt);
result = bluck.split("\r\n");//在windows中回车换行必须这样写
System.err.print(result[1]);
}
System.out.println("=====BufferIStream===== time: " + (System.currentTimeMillis() - begin) + "ms");
return result;
}catch(Exception e){
System.err.print(e);
return null;
}finally{
close();
}
}
public void close(){
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Object call() throws Exception {
// TODO Auto-generated method stub
return this;
}
//测试
public static void main(String[] args) throws IOException {
ReadConfigFile txt = new ReadConfigFile();
String a[] = txt.getFileContent();
for (int i=0;i