两个android线程而不是同步数据

时间:2010-04-06 23:07:00

标签: android multithreading synchronized

我有一个(也许是愚蠢的)问题:

我使用2个线程,一个是写浮动,一个是永久读取这个浮点数。我的问题是,当我不同步时会发生什么更糟?如果某些值不正确,那将是没有问题的,因为它们只是在每次写操作时都会切换一点。我现在以这种方式运行应用程序,没有任何问题所以我想知道会发生什么更糟糕的情况?

读/写冲突会导致像12345这样的数字被写入54321并且红色同时出现例如54345?或者会发生更糟糕的事情? (我不想使用同步来尽快保持代码)

3 个答案:

答案 0 :(得分:3)

可能发生的最糟糕的情况是,您的读者线程从不会看到您的作者线程所写的任何内容。无法保证一个线程写入的内存在没有某种形式的同步的情况下将被另一个线程看到。

答案 1 :(得分:0)

如果一个线程写入特定的float并将值从'a'更改为'b',则读取同一个float的另一个线程将只看到'a'或'b',而不是第三个值。

对于您的应用可能遇到的任何其他潜在逻辑问题,如果不了解您的应用更多信息,则无法回答这个问题。

答案 2 :(得分:0)

最糟糕的情况是,您的用户发现您的应用程序存在错误,因为并发问题导致应用程序无法正常运行。

无可争议的锁不会增加太多开销。您应该始终首先正确编写应用程序,然后仅在运行指示您遇到问题区域的指标后进行优化。我打赌你的许多应用程序代码很可能是性能问题的根源,而不是一些基本的同步。