gpt4 book ai didi

java - 同步数据库访问

转载 作者:行者123 更新时间:2023-12-02 00:34:53 25 4
gpt4 key购买 nike

我在我的应用程序中使用数据库,我需要同步访问数据库,例如当我的应用程序启动时有两个线程正在访问数据库,我如何避免这种情况?

private synchronized Database accessDB()
{
Database dbObj = null;
try {
_uri = URI.create(dbLocation + DB_NAME);
try {
dbObj = DatabaseFactory.openOrCreate(_uri, new DatabaseSecurityOptions(false));
System.out.println("Database Created"+_dbTopNews);
} catch (ControlledAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DatabaseIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DatabasePathException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURIException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dbObj;
}

上面的方法在调试时将对象返回给第一个线程,但在访问第二个线程时返回 null

最佳答案

一般来说,有两种方法可以做到这一点,具体取决于您要进行哪种隔离。

1:交易。这隔离了数据库中的操作。例如,保证一次只有一个线程( session )可以对表或行进行更改。

2:同步。这是 Java 中在多线程环境中处理线程并发的方法。通过使用同步(和“锁定”),可以隔离代码的各个部分,以便一次只有一个线程可以执行它。

很难对您提供的信息进行更具体的说明。

关于java - 同步数据库访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com