gpt4 book ai didi

java - 在实现 Runnable 的类中分配变量的最快方法是什么?

转载 作者:行者123 更新时间:2023-12-01 14:55:21 26 4
gpt4 key购买 nike

我有一个 A 类对象,它有一个 B 类对象。 B 类有一个 boolean 变量 bool,A 实例不断更新该变量(关闭事件)。 B 对象 b 实现了 Runnable。

class A{
private B b;
}

class B implements Runnable{
private boolean bool;

run(){
while(true){
if(bool){//do something}
}
}
}

我假设 boolean bool实际上在a的线程上,因为它是在a调用B的构造函数时初始化的,并且b线程直到在b实例上调用start才开始,并且直到bool被调用之后才调用start已初始化。

如果是这种情况,则 b 线程必须保留自己的 bool 副本。如果是这种情况,从 a 更改 bool 以便 b 线程能够看到它的最快方法是什么?使 bool volatile ,或者有什么方法可以直接分配给 b 的副本吗?

请忘记循环,它是针对 GLES20 的。我需要知道的是 b 是否有 bool 的副本,以及事件线程在 GL 线程上持续更新 boolean 的最快方法是什么。

最佳答案

如果在某个阶段对变量的读取和写入可以在不同的线程上进行,则需要某种形式的同步。在这种情况下,最明智的选择是:

但是,根据您的用例,可能有更好的方法通过使用适当的并发对象(例如锁存器、信号量或队列)来实现您的目标,并避免繁忙等待,这将使用许多 CPU 周期不必要的。

关于java - 在实现 Runnable 的类中分配变量的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348805/

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