【发布时间】:2014-11-20 04:46:50
【问题描述】:
我正在尝试编写一个 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");
此代码有效,并且向我所说的 JMS 队列发送了许多消息(通过 NumberOfThreads 和 NumberOfMessagesPerThread)。但是,我不相信它真的是多线程的。例如,如果我将线程设置为 10,消息设置为 100(因此总共 1000 条消息),则它需要与 100 个线程和每个 10 条消息相同的时间。甚至下面的这段代码也需要同样的时间。
for (int i = 0; i < 1000; i ++) {
sendMessage("Hello");
}
我做的线程正确吗?我希望多线程代码比普通的 for 循环快得多。
【问题讨论】:
标签: java multithreading jms