如何使所有类方法只在单线程上运行?(同步课?)

Gin*_*as_ 0 java sqlite multithreading jdbc synchronized

我知道synchronized关键字make方法一次只能在单个类上运行.但这是问题所在.

我有一个带有方法的数据库类,例如insertAccount,updateSetting等等.如果我制作insertAccount,updateSetting同步,它们中的每一个都只能在一个线程上运行.

如果有一个整个数据库的方法,它会很棒,但没有一个.如果一个线程调用insertAccount而另一个线程调用updateSetting 的同时,它会坏了吧?

因为这些方法中只有一种可以随时运行.那我该怎么办?

有没有办法应用类似synchronized全班的东西?因此,如果第一个线程同时调用insertAccount第二个线程并且第二个线程调用updateSetting,则第二个线程必须等到第一个线程完成访问数据库.

Gho*_*ica 5

真正在这里的答案:退一步,做一些研究.您不应该在这里使用synchronized,而是转向"DB类" 之前查看读取器/写入器需要获取的锁定对象.有关更多信息,请参见此处

另一方面,您应该了解什么是事务,以及数据库如何支持这些事务.含义:存在不同类型的问题; 并且不同的层(应用程序代码,数据库)具有不同的职责.

你看,使用"试错法"并不是一种可以在这里解决的方法.你应该花一些严重的时间学习基本概念.否则,您可能会损坏您的数据集; 更糟糕的是:你冒着编写大多数时候工作正常的代码的风险; 但是以"随机"的模糊方式失败.因为当多个线程以不受控制的方式操纵共享数据时会发生这种情况.