【发布时间】:2017-12-22 00:35:49
【问题描述】:
我知道synchronized 关键字使方法一次只能在一个类上运行。但问题就在这里。
我有一个带有方法的数据库类,例如insertAccount、updateSetting 等。如果我使 insertAccount、updateSetting 同步,它们中的每一个一次只能在一个线程上运行。
如果整个数据库有一种方法,那就太好了,但没有一种方法。如果一个线程调用insertAccount 而另一个线程同时调用updateSetting,它会变坏,对吧?
因为任何时候都只能运行其中一种方法。那我该怎么办?
有没有办法将synchronized 之类的东西应用到全班?因此,如果第一个线程同时调用insertAccount 和第二个线程调用updateSetting,则第二个线程必须等到第一个线程完成访问数据库。
【问题讨论】:
-
你应该使用锁定机制,比如信号量
-
您应该依赖(正确使用)具有适当事务隔离级别的数据库事务,然后如果您有多个节点托管(Web)应用程序,它甚至可以工作(假设它们确实使用相同的数据库)。
标签: java multithreading sqlite jdbc synchronized