java - 在Android中什么时候应该使用锁,什么时候应该使用synchronized?有区别吗?

标签 java android multithreading thread-safety locks

我有一个 ArrayList,我在广播接收器回调中向其中添加项目。

但是,数组列表最终将附加到适配器,然后我希望将数组的内容显示到屏幕上。

该数组包含来 self 正在开发的 P2P 应用程序的对等信息,因此当设备接入和脱离连接/范围时,该数组会经常发生更改。

所以基本上 arraylist 会被频繁地读写。 我来自 C++ 背景,所以在访问它时我通常会使用锁来保护我的数组列表,但我不确定在 java/android 中应该使用什么。 如有任何建议,请。

最佳答案

使用锁永远不会错。所有同步所做的都是在幕后使用锁。一些 Java 纯粹主义者可能会提示,但您往往会通过使用信号量获得更大的灵 active (有时这只是唯一正确的方法)。还有一些丑陋的极端情况需要等待/通知,您必须真正理解信号量只是避免的用例才能正确使用。如果您熟悉它们,我会毫不犹豫地使用它,因为您现在使用的是 Java。

关于java - 在Android中什么时候应该使用锁,什么时候应该使用synchronized?有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24587822/

相关文章:

java - Java/Python 的球形几何库

Java 帮助比较 Calendar 对象

java - 在android中保持常量的最佳方法

c++ - 使用 boost::asio 处理 "reset by peer"场景

java - 设置理想的线程池大小

java - 如何从另一个类将 Canvas 添加到 JFrame?

java - 如何使用 Java 中的 Graphics2D 对象创建具有混合模式的矩形?

java - 如何在Android中使用Canvas Paint在圆弧顶部绘制线条路径

java - HttpGet 是否自动处理 cookie?

c++ - 在类中创建线程并在类 C++ 中使用它