gpt4 book ai didi

java - 局部变量访问 - 同步

转载 作者:行者123 更新时间:2023-11-29 05:59:44 26 4
gpt4 key购买 nike

在我的程序中,我有以下模板的功能:

public MyObject myMethod() {

final MyObject[] myObject = new MyObject[]{null};
MyListener myListener= new MyListener() {
public void messageReceived(MyObject newData) {
// Thread #1
myObject[0] = newData;
}
}

...

// Thread #2
while (myObject[0] == null) ;
return myObject[0];
}

不幸的是,Java 64 位线程 #2 中存在同步问题,线程 #2 看不到线程 #1 所做的任何更改,而 while 循环永远不会结束。我应该如何同步这些线程?

谢谢!

最佳答案

您正在进行一个繁忙的循环。这几乎不是一个好主意。请改用阻塞数据结构,例如 BlockingQueue。收到消息后,将其放入队列中。并让您的接收者从队列中获取消息。当队列中没有消息时,接收者将被阻塞。

关于java - 局部变量访问 - 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651084/

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