题目:
package read;
public class Test1 {
public static void main(String[] args){
System.out.println("begin:"+(System.currentTimeMillis()/1000));
/*模拟处理16行日志,下面的代码产生了16个日志对象,当前代码需要运行16秒才能打印完这些日志。
修改程序代码,开四个线程让这16个对象在4秒钟打完。
*/
for(int i=0;i<16;i++){ //这行代码不能改动
final String log = ""+(i+1);//这行代码不能改动
{
Test.parseLog(log);
}
}
}
//parseLog方法内部的代码不能改动
public static void parseLog(String log){
System.out.println(log+":"+(System.currentTimeMillis()/1000));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
代码:
package Exce;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test1 {
private static int j;
private static int k = 0;
public static void main(String[] args){
ExecutorService threadPool = Executors.newFixedThreadPool(4);
System.out.println("begin:"+(System.currentTimeMillis()/1000));
/*模拟处理16行日志,下面的代码产生了16个日志对象,当前代码需要运行16秒才能打印完这些日志。
修改程序代码,开四个线程让这16个对象在4秒钟打完。
*/
for(int i=0;i<16;i++){ //这行代码不能改动
final String log = ""+(i+1);//这行代码不能改动
{
threadPool.execute(new Runnable(){
public void run() {
Test1.parseLog(log);
k++;
}
});
}
k=i;
}
threadPool.shutdown();
}
//parseLog方法内部的代码不能改动
public static void parseLog(String log){
System.out.println(log+":"+(System.currentTimeMillis()/1000));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
本文探讨了如何通过引入多线程技术来优化日志处理过程,使其能够在短时间内完成大量日志的处理任务。通过将16个日志对象分配到四个线程中并同时执行,实现了在4秒内完成所有日志处理的目标。
130

被折叠的 条评论
为什么被折叠?



