相关疑难解决方法(0)

Java中的易失性关键字 - 澄清

关于我在java中读取volatile关键字的应用,我真的很困惑.

  1. 以下陈述是否正确?"在对同一字段的每次后续读取之前发生对易失性字段的写入"

  2. 理想情况下应该使用volatile关键字吗?

  3. 有什么区别:

    class TestClass
    {  private int x;
    
       synchronized int get(){return x;}
       synchronized void set(int x){this.x = x;}
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

class TestClass
{  private volatile int x;

   int get(){return x;}
   void set(int x){this.x = x;}

}
Run Code Online (Sandbox Code Playgroud)

java volatile

34
推荐指数
2
解决办法
1万
查看次数

我的Akka演员的属性应该标记为@volatile吗?

这个问题看起来类似于我的Scala actor的属性应该标记为@volatile吗?但不确定答案是否相同.

例如,如果配置了fork-join调度程序并且actor的状态没有被@volatile标记,那么是否保证actor的状态将通过缓存层次结构从一个核心(或处理器)传播到另一个核心(或处理器)/join工作线程在不同的核心(或处理器)上运行?

PS JSR133之后只有一个写入/读取操作到/从任何易失性变量执行刷新缓存到主内存并在其他核心(或处理器)上运行的其他线程上看到来自此线程的所有前面的非易失性写入,这是正确的吗?如果是,则可以回答,因为扫描工作队列会执行一些读数并从/向FJ任务的volatile变量写入.

volatile actor akka

10
推荐指数
1
解决办法
848
查看次数

了解scala中actor的线程性

我被告知(Scala)Actors实际上从不实际执行两个操作,这表明该行为(或反应?或接收?)方法本质上是同步的.我知道一个act方法中的长操作会导致阻塞问题,我认为必须以某种方式同步对消息队列的访问......但是......

建议的是,接收消息告诉它增加内部计数器的actor将以线程安全的方式递增计数器.不会同时处理两条更新消息,因此没有两条消息可以同时尝试更新计数器.

演员中的计数器属性听起来像"共享状态".

这样的操作是完全线程安全的吗?如果是这样,演员如何以一种有效的方式使用多个核心机器?演员如何多线程?

如果没有,那么以线程安全方式计算消息而不需要某些synchronized/volatile变量的适当惯用方法是什么?

multithreading functional-programming scala actor

6
推荐指数
2
解决办法
574
查看次数