问题标签 [synchronized-block]

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 投票
0 回答
43 浏览

java - 避免空同步块的正确方法是什么?

最近我开始研究多线程,我有一个问题,也许更有经验的人可以提供帮助。我的程序创建了两个并行线程,每个线程都打印从 0 到 19 的计数(实现 Runnable 接口的 NumbersPrinter 类)。

当其中一个线程达到某个数量(在 makeActionOnCount 变量中定义)时,它开始执行某个操作以停止执行第二个计数器。该动作持续 5 秒,之后两个计数器继续计数。计数器通过 Mediator 类的实例互连,performAcyion() 方法也属于 Mediator 类的实例。

这是主类:

现在编写程序的方式 - 工作正常,但我不太明白我应该在第一个同步块中写什么,因为如果你从中删除所有内容,程序仍然可以工作,因为计数器不执行performAction() 方法停止,因为计数器无法访问 Mediator 对象的监视器,因为它正忙于并行计数器。AtomicBoolean 变量并检查它也没有任何意义。换句话说,我可能根本不使用 wait() 和 notify() 构造,以及 AtomicBoolean 变量的值,而只是使用空的同步块在每次新迭代时检查对 Mediator 对象的监视器的访问。但我听说空的同步块是一种不好的做法。

我正在寻求有关如何重写程序以正确使用同步块以及 wait() 和 notify() 方法的帮助。也许我在错误的对象上同步?你会如何解决类似的问题?提前致谢

0 投票
0 回答
17 浏览

android - 在android中使用同步进行音频焦点

https://developer.android.com/reference/android/media/AudioFocusRequest

这是 Android 开发人员关于 AudioFocusRequest 的文档的链接。以下是该文档中给出的代码示例中的一些代码片段。我怀疑为什么需要在这些代码行中使用同步块?我知道同步块的功能是什么。我想知道的是,如果在这种情况下该代码块不同步,可能会出现什么问题。

requestAudioFocus 的代码片段:

OnFocusChangeListener 的代码片段:

我希望我的疑问很清楚。提前致谢。

0 投票
0 回答
12 浏览

java - 在单例中使用同步块

我遇到了以下将 Room-database 实现为单例的示例代码:

就个人而言,我会使用:

有人可以向我解释这两种实现是否存在实质性差异吗?

顺便说一下,第一个示例中没有使用私有构造函数。我真的不知道为什么,我一直认为我们必须在单例中使用它。除此之外,我不明白为什么我们需要第二个if (instance == null)

0 投票
2 回答
48 浏览

java - 线程重启后同步块仍然锁定

我尝试重新启动线程,但线程中的同步块在重新启动后保持锁定。我不应该更改套接字属性,因为某些进程花费的时间太长,但是当网络连接丢失时,它会永远挂起。我尝试使用 InterruptedException 但它不起作用。有没有办法释放这个锁?

结果:

0 投票
1 回答
42 浏览

java - 以下示例:同步整数无效

myCode 如下:

我想知道为什么zhangsan和lisi都可以打印:李四9锁对象:1522503870 张三9锁对象:1522503870

结果是:

我想知道为什么张三和李四都可以得到:李四9锁对象:1522503870 张三9锁对象:1522503870