java空中网线程面试题1.

本文探讨了如何通过引入多线程技术来优化日志处理过程,使其能够在短时间内完成大量日志的处理任务。通过将16个日志对象分配到四个线程中并同时执行,实现了在4秒内完成所有日志处理的目标。
题目:

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();
			}		
		}
		
	
}		


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值