我试图一次运行2个不同的线程,但无法做到这一点。 Thread_1& Thread_2运行,但它们之间的差异大约是500ms。我在代码中的任何位置都没有使用wait()
或sleep()
。
问题:
1 -> How to make run thread simultaneously or in parallel?
2 -> How to make thread run fast ?
对于第二个问题,我使用了Thread.setPriority(Thread.MAX_PRIORITY);但其他时间差异是相同的。
更新了示例代码:与下面的示例相同,但两个线程之间需要更长的时间才能运行。
public static void main(String args[])
{
MyThread thread1 = new MyThread("thread1: ");
MyThread thread2 = new MyThread("thread2: ");
thread1.start();
thread2.start();
boolean thread1IsAlive = true;
boolean thread2IsAlive = true;
do {
if (thread1IsAlive && !thread1.isAlive()) {
thread1IsAlive = false;
System.out.println("Thread 1 is dead.");
}
if (thread2IsAlive && !thread2.isAlive()) {
thread2IsAlive = false;
System.out.println("Thread 2 is dead.");
}
} while(thread1IsAlive || thread2IsAlive);
}
我已经完成谷歌并经历了一些文档。但无法做到这一点。
任何人都可以给我一些想法或方法来做到这一点。
帮助将不胜感激。
答案 0 :(得分:2)
如何同时或并行运行线程?
作为程序员,它只能在多处理器机器上使用。在单处理器上,一次只能运行一个线程,而JVM(和OS)可以选择运行哪个线程。
如何让线程快速运行?
您可以尝试(如您所做),但总体控制仅适用于JVM(和操作系统)。
然而,增加线程的优先级并不意味着它会快速运行。它只会让线程比其他线程更频繁地运行。即OS可能(或可能不)选择它更多。时间比其他线程。
答案 1 :(得分:1)
你无法确定它也不能确定它。你调用thread.start()来启动一个线程。但它取决于操作系统何时启动。即使设置优先级你也无法完全实现此