java - 如何同步不同的java程序访问公共(public)资源

标签 java multithreading

我正在尝试同步访问公共(public)资源(数据库)的类的实例。这可以通过使用notify和wait()来完成,但我需要知道如果不同的java程序使用此类来创建实例,那么如何同步它们。 谢谢

最佳答案

正如 Sotirios Delimanolis 评论的那样 - “你不能。同步只能发生在一个 JVM 的范围内。”

因此,您应该使用一些外部资源来执行此同步。文件可能是一个很好的例子:

try {
    // Get a file channel for the file
    File file = new File("filename");
    FileChannel channel = new RandomAccessFile(file, "rw").getChannel();

    // Use the file channel to create a lock on the file.
    // This method blocks until it can retrieve the lock.
    FileLock lock = channel.lock();

    // ** Your logic here **
} finally {
    // Release and close 
    lock.release();
    channel.close();
}

关于java - 如何同步不同的java程序访问公共(public)资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19080097/

相关文章:

java - 扫描仪不接受我提供的输入

java - 2 个带有条件的用户输入并在另一种方法中使用

c# - 线程在for循环中休眠

c - 如何使用c锁定然后解锁sqlite数据库?

java - 如何在向另一个应用程序发送数据时实现重试策略?

java - 如何以多线程方式运行H2数据库?

java - spring-data 在子对象上分离实体

java - 位图到 byte[] 到位图(不压缩)

java - worklight 多线程/servlet上下文调用适配器

c# - 从后台线程更新 UI - 我怎么知道我的 GUI 没有被处理掉?