问题标签 [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.

0 投票
2 回答
8656 浏览

java - 部分方法的弹簧和同步

我有一个作为 Spring 有线 bean 的经理。我相信默认情况下为 spring 定义的每个 bean 都连接为单例。我在这个 bean 中有一些需要同步的方法。那我该怎么做——

或者

?

0 投票
4 回答
117304 浏览

java - Java 中 volatile 和 synchronized 的区别

我想知道将变量声明为volatile和始终访问synchronized(this)Java 块中的变量之间的区别?

根据这篇文章http://www.javamex.com/tutorials/synchronization_volatile.shtml有很多要说的,有很多不同,但也有一些相似之处。

我对这条信息特别感兴趣:

...

  • 对 volatile 变量的访问永远不会阻塞:我们只进行简单的读取或写入,因此与同步块不同,我们永远不会持有任何锁;
  • 因为访问 volatile 变量永远不会持有锁,所以它不适合我们希望将读取-更新-写入作为原子操作的情况(除非我们准备“错过更新”);

读-更新-写是什么意思?写入不是更新还是仅仅意味着更新是依赖于读取的写入?

最重要的是,什么时候更适合声明变量volatile而不是通过synchronized块访问它们?volatile用于依赖于输入的变量是个好主意吗?例如,有一个名为的变量render通过渲染循环读取并由按键事件设置?

0 投票
1 回答
459 浏览

java - Java:使用锁时是否所有可变变量都需要是 volatile 的?

下面的变量 x 是否需要是 volatile 的?

或者 utils.concurrent 锁中的操作是否执行与同步块相同的功能(确保它被写入内存,而不是存储在 cpu 缓存中)?

0 投票
5 回答
2451 浏览

java - Java synchronized 关键字是否刷新缓存?

仅限 Java 5 及更高版本。假设一台多处理器共享内存计算机(您现在可能正在使用一台)。

以下是单例延迟初始化的代码:

instance必须声明以防止优化器重写getInstance volatile() 如下(这在顺序程序中是正确的):

假设优化器不重写代码,如果instance没有声明volatile,是否仍然保证在退出块时刷新到内存synchronized,并在进入块时从内存中读取synchronized

编辑:我忘了让 getInstance() 静态。我认为这不会改变答案的有效性;你们都知道我的意思。

0 投票
2 回答
29678 浏览

java - 在两个线程和主程序之间共享一个对象

我是 Java 新手,正在参加并发编程课程。我正在拼命地尝试获得一个最小的工作示例,它可以帮助演示我学到的概念,例如使用“同步”关键字和跨线程共享对象。一直在寻找,但没有得到一个基本的框架。Java程序员,请帮助。

0 投票
2 回答
235 浏览

java - 锁定 Java 类中静态成员的获取

我目前正在解决由于严重的锁争用导致的性能下降问题。我正在考虑“锁定拆分”来解决这个问题。

骨架使用模式是::

当前使用情况::

我的方法::

因为method1()并且method2()不使用相同的资源,所以我正在考虑拆分锁。到目前为止,它们都在争夺 Class 锁,因为它们都是静态同步的。我正在考虑将其更改为::

他们现在会争夺“班级锁”还是resr1Lock/ resrc2Lock

0 投票
2 回答
330 浏览

java - java:等到另一个线程执行一条语句n次

停止线程并等待另一个线程执行一定次数的语句(或方法)的最佳方法是什么?我正在考虑这样的事情(让“数字”成为一个整数):

显然这是行不通的,首先是因为您似乎不能 wait() 使用 int 类型。此外,对于这样一个简单的任务,我想到的所有其他解决方案都非常复杂。有什么建议么?(谢谢!)

0 投票
3 回答
2004 浏览

java - 为什么 EclEmma 不涵盖同步(MyClass.class)?

我正在使用 EclEmma 进行覆盖率分析。

我的 Java 代码包含一个 synchronized(MyClass.class) {} 块。

EclEmma 说它只被部分覆盖,尽管我有一个单元测试,其中一个线程可以访问而另一个线程被阻塞。

是否有可能使用 EclEmma 全面覆盖同步?

我可以以某种方式对代码进行注释以告诉 EclEmma 全面覆盖这一行吗?

亲切的问候罗杰

0 投票
4 回答
6043 浏览

java - 如果线程在同步块之前等待监视器被释放或者如果它调用 wait() 有什么区别

我读过很多关于线程状态的文档,其中一些说有两种不同的状态:阻塞(同步之前)和等待(如果调用等待),还有一些说只有一种状态:等待。此外,一些文档告诉你应该为每个 wait() 调用 notify() ,如果你不这样做,那么即使监视器被解锁,线程 waiting() 也永远不会有资格执行。

0 投票
4 回答
301 浏览

java - 在这种情况下,同步语句如何工作?

假设我有这样的课程:

然后:

我只是想确保registry在迭代它时不会对其进行修改。将其设为同步地图是否可以保证这种行为?还是我需要synchronized声明。同步语句的行为会像我期望的那样吗?

谢谢