java - Java 中跨类共享条件和锁定变量

标签 java multithreading synchronization locks data-sharing

我想编写一个程序,其中两个单独的线程运行两个对象,一个线程等待执行其代码,直到另一个线程发出信号。

现在要执行此操作,我想使用 Condition 接口(interface)。

我无法弄清楚在代码中声明 lockcondition 变量的位置,以便两个类都可以访问它。

我想问的是,线程如何共享lockcondition变量,以确保它们在相同的条件下发出信号和等待。

最佳答案

线程必须有某种连接才能工作。如果线程 1 引用了线程 2,则锁和条件变量可能位于线程 2 中,反之亦然。

如果不是,变量必须位于两个线程都可以访问的单独类中。因此,您必须将该类的相同实例传递给两个线程,以便该实例成为共享资源。以下示例假设您有类 Thread1Thread2,它们使用以 SharedResource 作为参数的构造函数扩展 Thread:

SharedResource sr = new SharedResource();
Thread1 t1 = new Thread1(sr);
Thread2 t2 = new Thread2(sr);
t1.start();
t2.start();

关于java - Java 中跨类共享条件和锁定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13447953/

相关文章:

java - 优化文件下载

c# - 开发将使用/创建多个线程的 C# Windows 服务需要专家意见

java - 双重检查锁定的乱序写入

go - 何时在 Go 中刷新文件?

java - "list.clear()"上的 NullPointerException

java - 我正在使用以下代码从本地主机下载图片。它会导致意外错误

java - 如何使用 XQuery 从 Java 使用 Saxon 输出 json

java - 方法同步线程问题

Python 使用多个处理器

scala - TransactionalMap 与 SynchronizedMap