同步数据库访问

时间:2011-11-09 11:07:06

标签: java blackberry java-me blackberry-jde

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

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

A Y

1 个答案:

答案 0 :(得分:3)

通常,有两种方法可以执行此操作,具体取决于您所处的隔离。

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

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

很难对您提供的信息更加具体。