我有一个java程序,它将一些文件提取到客户端机器上。我已经实现了4个线程来提取文件。但是线程实现几乎不影响提取时间。我已经在jvisualvm中检查了线程的执行情况,它看起来很好,我确信线程是以并行方式实现的。这里是我的系统配置...如何检查Java程序中的线程是按顺序还是并行运行?
Windows XP,Core2duo,3GB RAM。 java-vm-args:-Xmx512M -Xss2M。 我已经打印可用的处理器到正在运行的JVM ... Runtime.getRuntime()。availableProcessors()= 1(如果我没有错,它应该执行2个逻辑线程)。
我错过了什么吗?我们如何确保线程在硬件级别平行运行?
瓶颈可能是磁盘IO(而不是线程中的处理时间)。你检查了吗? –
你可以在你的主线程中检查.isAlive()(或者你不相信这个,使用像processexplorer这样的外部应用程序)。请记住,每个物理磁盘只能使用1个读取线程,否则您可能会创建更多开销并使用更多线程减慢进程。 – andrew
感谢您的回答。 @Ignacio,我们如何检查瓶颈是磁盘IO。 – Bala