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

标签 java android

我有一个 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/

相关文章:

java - 作为输入流的一部分输出

android - FCM 无法正常工作推送通知声音 android

java - 为交易系统设计订单对象

java - 序列化对象的大小

java - 为什么 java RuntimeException 不叫 UncheckedException?

Android BLE 在不可连接模式下接收广告数据

Android:如何从资源文件夹运行视频

java - 从实用程序类中创建的对话框启动 Activity - Android

java - Android studio - 在 textView 中更改字符串

java - 我应该使用什么面向对象结构来描述动物的行为?