问题标签 [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 投票
6 回答
44688 浏览

java - Java中的同步方法和同步块有什么区别?

Java中的同步方法和同步块有什么区别?

我一直在网上搜索答案,人们似乎对此不太确定:-(

我的看法是两者之间没有区别,只是同步块可能在范围内更加本地化,​​因此锁定时间会更短?

如果在静态方法上使用 Lock,那么 Lock 是在什么情况下使用的?Lock on Class 是什么意思?

0 投票
3 回答
340 浏览

java - 我对同步块的假设是否正确?

我有一个带有同步块的方法shout()。

如果我有两个运行此方法的线程,我是否正确假设两个“同步呐喊”总是一个接一个地出现?“同步呐喊”之间不能有其他语句吗?

0 投票
1 回答
670 浏览

java - Java 同步写块

我是 java 新手,我有一个关于同步的问题。

我有以下用于写入网络的代码(现在是简单的实现):

我想知道这里是否需要块级同步,因为我正在一次写入整个数据。还是有机会出现比赛条件?我问是因为要写入的数据来自多个来源。

谢谢你。

0 投票
5 回答
36110 浏览

java - 在 lockObject 上同步和使用它作为锁有什么区别?

我知道同步方法和同步块之间的区别,但我不确定同步块部分。

假设我有这个代码

在这种情况下,使用lockObject和使用this作为锁有什么区别?对我来说似乎是一样的。。

当您决定使用同步块时,您如何决定哪个对象成为锁?

0 投票
2 回答
11070 浏览

java - AtomicBoolean 与同步块

我试图通过synchronizedAtomicBoolean.

这是一个例子synchronized

和替代方案AtomicBoolean

利用AtomicBooleanCAS 属性应该比依赖同步快得多,所以我运行了一个小基准测试

对于 10 个并发线程和 1000000 次迭代,AtomicBoolean只比synchronized块快一点。

使用 AtomicBoolean 在 toggleCondition() 上花费的平均时间(每个线程):0.0338

同步在 toggleCondition() 上花费的平均时间(每个线程):0.0357

我知道微基准值得它们的价值,但差异不应该更高吗?

0 投票
5 回答
3800 浏览

java - 这个可以吗?同步(线程),然后在同步块中 thread=null

我看到这个:

可以设置thread=null同时保持锁定吗?

我在一些 BB 代码中找到了这个金块。

0 投票
4 回答
1478 浏览

java - 如何正确使用同步?

这段代码:

随机抛出 AIOOBE。从我读过的内容来看,同步应该可以防止这种情况发生,那么我做错了什么?

编辑:

AIOOBE = Array Index Out Of Bounds Exception 代码不完整,减少到需要的部分。但是为了让你开心,OFFSET 是 4,想象一下有一个 for 循环在开头添加了一点数据。第二个线程读取和/或修改列表。

编辑2:

我注意到在绘制列表并且当前游戏结束时会发生这种情况。清空列表时,绘制线程尚未绘制所有元素。有没有办法告诉游戏等待清空列表直到它为空?

编辑3:

我刚刚注意到我不确定这是否是多线程问题。似乎我只有 2 个线程,一个用于计算和绘图,一个用于用户输入。我需要比我想象的更多地研究这个问题。

0 投票
4 回答
426 浏览

java - 同步到要实例化的对象

此代码是否存在任何同步/引用问题?

(假设myStrings已经实例化了。)

MySynch.java

对象数组myStrings可以被多个线程读取,并且有一个线程通过运行来更新(写入)它updateStrings()。从它读取的线程也将使用一个synchronized (myStrings)块来读取它,当然,为了安全起见。

锁定数组并在锁定它的块再次实例化它synchronized(如上所述)是否存在问题?

0 投票
2 回答
21189 浏览

synchronized-block - 在 java 中,同步块中的返回值看起来很糟糕。真的有关系吗?

我有一个 WeakReference 的 Collections.synchronizedList,_components;

我写了如下内容,希望编译器抱怨:

但是编译器完全满意。请注意,List.add() 返回 TRUE。好吧,从同步块的任何退出都会释放锁,但这看起来不奇怪吗?它有点像块中的“洞”,类似于在循环中使用 return。

你愿意维护这样的代码吗?

0 投票
1 回答
1891 浏览

objective-c - 互斥锁仅在使用 @synchronized 指令到达其调用时阻塞主线程

我正在构建一个多线程应用程序,多个线程可以从中写入包括主线程在内的 sqlite3 数据库。我声明了一个用于互斥锁的静态公共变量:

在每个应该写入数据库的方法中,我使用带有@synchronized 指令的变量来锁定写入数据库的部分。

一切正常,但有时当从主线程调用这些方法中的任何一个时,它会冻结等待互斥锁再次解锁但它没有,问题是这只发生在来自主线程和代码的某些调用上写入数据库的内容肯定是有限的,所以我无法确定为什么主线程一直在等待互斥锁被解锁,以及为什么它一开始没有被解锁。

注意:没有其他线程被这个互斥锁阻塞,只有主线程。

编辑:我尝试使用 performSelectorOnMainThread:waitUntilDone 替换 @synchronized 指令:

它工作得很好,但我试图避免主线程上的负载过多,而不是阻止用户交互。

任何帮助将不胜感激,并提前非常感谢。