여러 스레드를 사용하여 JMS 대기열에서 메시지를 보내고 읽는 Java 클래스를 작성하려고합니다. 아래 코드가 있습니다.Java : 여러 스레드로 JMS 대기열에 메시지 보내기
System.out.println("Sending messages");
long startTime = System.nanoTime();
Thread threads[] = new Thread[NumberOfThreads];
for (int i = 0; i < threads.length; i ++) {
threads[i] = new Thread() {
public void run() {
try {
for (int i = 0; i < NumberOfMessagesPerThread; i ++) {
sendMessage("Hello");
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
threads[i].start();
}
//Block until all threads are done so we can get total time
for (Thread thread : threads) {
thread.join();
}
long endTime = System.nanoTime();
long duration = (endTime - startTime)/1000000;
System.out.println("Done in " + duration + " ms");
이 코드는 작동 (NumberOfThreads 및 NumberOfMessagesPerThread를 통해) 내가 말할 내 JMS 큐에 그러나 많은 메시지를 보냅니다. 그러나, 나는 그것이 정말로 다중 스레드로 작동하고 있다고 확신하지는 않습니다. 예를 들어 스레드를 10으로 설정하고 메시지를 100 개 (총 1000 개의 메시지)로 설정하면 100 개의 스레드와 10 개의 메시지가 같은 시간이 걸립니다. 아래의 코드조차도 같은 시간이 걸립니다.
for (int i = 0; i < 1000; i ++) {
sendMessage("Hello");
}
스레딩 작업을 수행하고 있습니까? 다중 스레드 코드가 일반 for 루프보다 훨씬 빠를 것이라고 기대합니다.
마지막 단락은 중요합니다. 측정 수행시 항상 단일 스레드로 시작하고 거기에서 점진적으로 이동하십시오. 어떤 시점에서는 공연이 중단되기 시작할 수도 있습니다. – Deltharis