gpt4 book ai didi

java - 当另一个线程发生某些事情时从主线程获取数据?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:22 25 4
gpt4 key购买 nike

目前我有一个线程运行一个监听连接的套接字。当它接收到连接时,它需要上传在主线程中收集的数据(即从主线程中获取数据)。但是,我传递了对象的一个​​实例,但它从未使用等待连接时收集的数据进行更新。

有没有正确的方法来做到这一点?我四处搜索,似乎找不到具体的答案。

有人能给我指出正确的方向吗?


希望这是有道理的,但我会尝试通过示例进行更多解释。

class MainThread {
private void MainThread() {
SomeObj obj = new SomeObj("DATA Needed");

SecondThread second = new SecondThread(obj);
second.start();
}
}

class SecondThread extends Thread {
SomeObj obj;

public void SecondThread(Object obj) {
this.obj = obj;
}
public void run() {

//Listening for connection
//Connection get!
//Get updated data (Object obj) from main thread.
//Upload
}
}

我很感激你能给我的任何帮助。如果我完全错误地处理这个问题,请告诉我!我宁愿学习并得到答案,而不是仅仅得到答案。

非常感谢!

最佳答案

有一组有限的事件可确保一个线程中的写入在另一个线程中可见。线程创建是其中之一,因此最初写入 obj 的任何数据都应该在第二个线程中可用。

一种选择是在 obj 上同步。如果主线程仅通过调用它的同步方法修改它,而第二个线程从 obj 同步方法获取数据,那么主线程写入的数据在第二个线程中将是可见的。

如果你真的想学习Java中的多线程,我推荐Java Concurrency in Practice

关于java - 当另一个线程发生某些事情时从主线程获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225684/

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