1

我试图一次运行两个不同的线程,但无法做到这一点。Thread_1 & Thread_2 运行,但它们之间的差异约为 500 毫秒。我没有在我的代码中使用wait()或任何地方。sleep()

问题:

  1. 如何使运行线程同时或并行?

  2. 如何让线程快速运行?

对于第二个问题,我使用了这个,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);
}

我已经在网上搜索并浏览了一些文档。接下来我可以尝试什么?

4

2 回答 2

2

如何使运行线程同时或并行?

作为程序员,只有在多处理器机器上才有可能。在单处理器上,一次只能运行一个线程,由 JVM(和 OS)来选择运行哪个线程。

如何让线程快速运行?

您可以尝试(正如您所做的那样),但总体控制仅由 JVM(和操作系统)控制。

但是,增加线程的优先级并不意味着它会运行得很快。它只会使线程比其他线程更频繁地运行。即操作系统可能(或可能不会)选择它更多没有。次比其他线程。

通过此链接了解更多详细信息。也检查一下

于 2012-12-06T12:14:53.563 回答
1

您无法确定也无法做到。您调用 thread.start() 来启动线程。但这取决于操作系统何时启动。即使设置了优先级,您也无法完全实现这一点。

于 2012-12-06T12:14:10.087 回答