gpt4 book ai didi

java - 线程 wait() 影响主线程?

转载 作者:行者123 更新时间:2023-12-01 07:22:22 25 4
gpt4 key购买 nike

考虑这个简单的多线程示例:

public class LetsMutexThreads {

public static Object MUTEX = new Object();

private static class Thread1 extends Thread {
public void run() {
synchronized (MUTEX)
{
System.out.println("I'm thread 1 , goint to take a nap...");
try
{
MUTEX.wait();
}

catch (InterruptedException e)
{
e.printStackTrace();
}

System.out.println("T1 : That's it , I'm done ...");
}
}
}

private static class Thread2 extends Thread {
public void run() {
synchronized (MUTEX)
{
System.out.println("Thread 2 : Let's rock N roll !");
System.out.println("Waking up my buddy T1 ...");
MUTEX.notify();
}
}
}

public static void main(String[] args)
{
Thread2 t2 = new Thread2();
Thread1 t1 = new Thread1();
t1.run();
t2.run();
}

}

我试图允许Thread1等待去 sleep ,然后让Thread2使用notify()唤醒Thread1 ,但他没有机会。

为什么Thread1的wait()影响主线程执行t2.run();

最佳答案

您不得尝试使用 run() 方法启动线程。它实际上并没有创建一个新线程,而是运行当前线程中的代码。使用 thread.start() 来代替,以便在单独的(新)线程中执行代码

关于java - 线程 wait() 影响主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com