作者:手机用户2602897765 | 来源:互联网 | 2023-01-29 14:07
我知道synchronized
关键字make方法一次只能在单个类上运行.但这是问题所在.
我有一个带有方法的数据库类,例如insertAccount
,updateSetting
等等.如果我制作insertAccount
,updateSetting
同步,它们中的每一个都只能在一个线程上运行.
如果有一个整个数据库的方法,它会很棒,但没有一个.如果一个线程调用insertAccount
而另一个线程调用updateSetting
的同时,它会坏了吧?
因为这些方法中只有一种可以随时运行.那我该怎么办?
有没有办法应用类似synchronized
全班的东西?因此,如果第一个线程同时调用insertAccount
第二个线程并且第二个线程调用updateSetting
,则第二个线程必须等到第一个线程完成访问数据库.
1> GhostCat say..:
在真正在这里的答案:退一步,做一些研究.您不应该在这里使用synchronized,而是在转向"DB类" 之前查看读取器/写入器需要获取的锁定对象.有关更多信息,请参见此处
另一方面,您应该了解什么是事务,以及数据库如何支持这些事务.含义:存在不同类型的问题; 并且不同的层(应用程序代码,数据库)具有不同的职责.
你看,使用"试错法"并不是一种可以在这里解决的方法.你应该花一些严重的时间学习基本概念.否则,您可能会损坏您的数据集; 更糟糕的是:你冒着编写大多数时候工作正常的代码的风险; 但是以"随机"的模糊方式失败.因为当多个线程以不受控制的方式操纵共享数据时会发生这种情况.