gpt4 book ai didi

java - 这种在线程之间传递对象的方式在 JMM 下安全吗?

转载 作者:行者123 更新时间:2023-11-29 21:33:15 25 4
gpt4 key购买 nike

我正在寻找一种将对象从后台线程传递到 UI 线程的安全方法。下面的代码是否安全?

// on background thread
final HugeObject object = constructHugeObjectFromDatabaseAndNetwork();
uiThreadHandler.post(new Runnable() {
public void run() { doSomethingWithObject(object); }
});

即,JMM 规则是否允许在 doSomethingWithObject 调用期间实际上部分构造对象?另外,JMM 与 Android 及其虚拟机的相关性如何?

最佳答案

是的 - 处理程序就是为了做到这一点:以线程安全的方式在线程之间交换信息。

在实践中,handlers使用thread safe (synchronized) message queue发布消息,在您的代码与您的对象在 UI 上发生的任何事情之间创建先行关系。

Recent versions of android comply with the JMM .

关于java - 这种在线程之间传递对象的方式在 JMM 下安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934308/

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