gpt4 book ai didi

java - 为什么我在使用 wait 和 notification 在 java 中实现线程间通信时出现错误?

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

我正在实现 SimpleInterThreadCommunication 的一个简单示例,并使用了等待和通知。

我在 InterThread 类中收到总计错误,谁能解释一下原因

public class InterThread 

{

public static void main(String s[])throws InterruptedException

{

Thread b=new Thread();

b.start();

Thread.sleep(10);

synchronized (b)

{

System.out.println("Main thread trying to call wait");

b.wait();

System.out.println("Main thread got notifies");

System.out.println(b.total); //error here total cannot be resolved to a field

}

}

}

class ThreadB extends InterThread

{

int total=0;

public void run()

{

synchronized(this)

{

System.out.println("child thread got notifies");

for(int i=0;i<3;i++)

{

total=total+i;

}

System.out.println("child thread ready to give notification");

this.notify();
}

}

}

最佳答案

您需要创建ThreadB类的对象才能访问total字段。它对 Thread 类对象不可见。

您已创建 Thread 类的 b 对象,并且在 Thread 类中没有任何名为 total 的此类字段可用。

更改您的代码,如下所示:

    ThreadB b1=new ThreadB();
System.out.println(b1.total);

关于java - 为什么我在使用 wait 和 notification 在 java 中实现线程间通信时出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29471997/

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