Android,当我必须在线程中使用同步时

时间:2015-07-06 13:22:59

标签: java android multithreading bluetooth

我在Java应用程序的开头。我已经用一些线程创建了一个服务,但是当我不得不使用synchronized时以及何时不使用时,我还无法理解。

例如,我必须连接到模块的蓝牙连接,然后我使用具有两个线程的服务:ConnectThread放弃连接,ConnectedThread设法读/写连接。

那么我何时必须使用synchronized?

谢谢

2 个答案:

答案 0 :(得分:2)

每当不同的线程使用相同的(即全局)变量时,使用Synchronized关键字,基本上在共享信息时。检查代码以查看是否是这种情况。

当每个线程使用的变量是本地变量时,不需要同步。使用它会导致性能下降,并可能导致不一致。

答案 1 :(得分:0)

我尽可能地避免使用线程,因为我不熟悉它们,但我会尽量解释它。

如果多个线程可以访问您的方法或代码块,则只使用synchronized。

这是一个简单的解决方案,可以防止其他线程访问相同的代码而另一个仍在使用它。这将有助于防止与内存相关的问题,但会导致性能问题。因为同步代码比非同步代码慢得多。我也相信死锁也可能是一个问题