나는 프로그램으로 촬영 한 총 시간과 프로그램이 평균 시간을 측정해야하는 프로젝트를 진행 중입니다. 그리고 그 프로그램은 멀티 스레드 프로그램입니다.걸린 총 시간과 모든 스레드에 의해 걸린 평균 시간
해당 프로그램에서 각 스레드는 특정 범위에서 작동합니다. 입력 매개 변수는 Number of Threads
및 Number of Task
입니다.
number of threads is 2
및 number of tasks is 10
인 경우 각 스레드는 10 tasks
을 수행합니다. 즉 2 스레드가 20 tasks
일을 의미합니다.
그래서 수단 -
첫 번째 스레드 11 and 20
사이 ID를 사용한다 1 and 10
및 제 스레드 사이 ID를 사용한다.
위의 시나리오가 작동했습니다. 이제 모든 스레드가 취하는 총 시간과 평균 시간을 측정하고 싶습니다. 그래서 나는 아래 프로그램을 내 프로그램에 넣었다.
문제 설명 : -가
이사람이 나에게 나는 모든 스레드에 의해 Total time and Average time taken
을 측정하려고하는 방법을 말할 수 내 아래 프로그램에서 올바른 아닌지?
//create thread pool with given size
ExecutorService service = Executors.newFixedThreadPool(noOfThreads);
long startTime = 0L;
try {
readPropertyFiles();
startTime = System.nanoTime();
// queue some tasks
for (int i = 0, nextId = startRange; i < noOfThreads; i++, nextId += noOfTasks) {
service.submit(new XMPTask(nextId, noOfTasks, tableList));
}
service.shutdown();
service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
} finally {
long estimatedTime = System.nanoTime() - startTime;
logTimingInfo(estimatedTime, noOfTasks, noOfThreads);
}
private static void logTimingInfo(long elapsedTime, int noOfTasks, int noOfThreads) {
long timeInMilliseconds = elapsedTime/1000000L;
float avg = (float) (timeInMilliseconds)/noOfTasks * noOfThreads;
LOG.info(CNAME + "::" + "Total Time taken " + timeInMilliseconds + " ms. And Total Average Time taken " + avg + " ms");
}
그냥 위의 프로그램, 나는 우리 LNP 테스트를 위해 나에게 전용으로 사용되는 컴퓨터에서 실행됩니다. – AKIWEB