问题标签 [synchronized]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 部分方法的弹簧和同步
我有一个作为 Spring 有线 bean 的经理。我相信默认情况下为 spring 定义的每个 bean 都连接为单例。我在这个 bean 中有一些需要同步的方法。那我该怎么做——
或者
?
java - Java 中 volatile 和 synchronized 的区别
我想知道将变量声明为volatile
和始终访问synchronized(this)
Java 块中的变量之间的区别?
根据这篇文章http://www.javamex.com/tutorials/synchronization_volatile.shtml有很多要说的,有很多不同,但也有一些相似之处。
我对这条信息特别感兴趣:
...
- 对 volatile 变量的访问永远不会阻塞:我们只进行简单的读取或写入,因此与同步块不同,我们永远不会持有任何锁;
- 因为访问 volatile 变量永远不会持有锁,所以它不适合我们希望将读取-更新-写入作为原子操作的情况(除非我们准备“错过更新”);
读-更新-写是什么意思?写入不是更新还是仅仅意味着更新是依赖于读取的写入?
最重要的是,什么时候更适合声明变量volatile
而不是通过synchronized
块访问它们?volatile
用于依赖于输入的变量是个好主意吗?例如,有一个名为的变量render
通过渲染循环读取并由按键事件设置?
java - Java:使用锁时是否所有可变变量都需要是 volatile 的?
下面的变量 x 是否需要是 volatile 的?
或者 utils.concurrent 锁中的操作是否执行与同步块相同的功能(确保它被写入内存,而不是存储在 cpu 缓存中)?
java - Java synchronized 关键字是否刷新缓存?
仅限 Java 5 及更高版本。假设一台多处理器共享内存计算机(您现在可能正在使用一台)。
以下是单例延迟初始化的代码:
instance
必须声明以防止优化器重写getInstance volatile
() 如下(这在顺序程序中是正确的):
假设优化器不重写代码,如果instance
没有声明volatile
,是否仍然保证在退出块时刷新到内存synchronized
,并在进入块时从内存中读取synchronized
?
编辑:我忘了让 getInstance() 静态。我认为这不会改变答案的有效性;你们都知道我的意思。
java - 在两个线程和主程序之间共享一个对象
我是 Java 新手,正在参加并发编程课程。我正在拼命地尝试获得一个最小的工作示例,它可以帮助演示我学到的概念,例如使用“同步”关键字和跨线程共享对象。一直在寻找,但没有得到一个基本的框架。Java程序员,请帮助。
java - 锁定 Java 类中静态成员的获取
我目前正在解决由于严重的锁争用导致的性能下降问题。我正在考虑“锁定拆分”来解决这个问题。
骨架使用模式是::
当前使用情况::
我的方法::
因为method1()
并且method2()
不使用相同的资源,所以我正在考虑拆分锁。到目前为止,它们都在争夺 Class 锁,因为它们都是静态同步的。我正在考虑将其更改为::
他们现在会争夺“班级锁”还是resr1Lock
/ resrc2Lock
?
java - java:等到另一个线程执行一条语句n次
停止线程并等待另一个线程执行一定次数的语句(或方法)的最佳方法是什么?我正在考虑这样的事情(让“数字”成为一个整数):
显然这是行不通的,首先是因为您似乎不能 wait() 使用 int 类型。此外,对于这样一个简单的任务,我想到的所有其他解决方案都非常复杂。有什么建议么?(谢谢!)
java - 为什么 EclEmma 不涵盖同步(MyClass.class)?
我正在使用 EclEmma 进行覆盖率分析。
我的 Java 代码包含一个 synchronized(MyClass.class) {} 块。
EclEmma 说它只被部分覆盖,尽管我有一个单元测试,其中一个线程可以访问而另一个线程被阻塞。
是否有可能使用 EclEmma 全面覆盖同步?
我可以以某种方式对代码进行注释以告诉 EclEmma 全面覆盖这一行吗?
亲切的问候罗杰
java - 如果线程在同步块之前等待监视器被释放或者如果它调用 wait() 有什么区别
我读过很多关于线程状态的文档,其中一些说有两种不同的状态:阻塞(同步之前)和等待(如果调用等待),还有一些说只有一种状态:等待。此外,一些文档告诉你应该为每个 wait() 调用 notify() ,如果你不这样做,那么即使监视器被解锁,线程 waiting() 也永远不会有资格执行。
java - 在这种情况下,同步语句如何工作?
假设我有这样的课程:
然后:
我只是想确保registry
在迭代它时不会对其进行修改。将其设为同步地图是否可以保证这种行为?还是我需要synchronized
声明。同步语句的行为会像我期望的那样吗?
谢谢