在Java中共享条件和锁定变量

时间:2012-11-19 05:03:36

标签: java multithreading synchronization locks data-sharing

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

现在我要使用Condition接口。

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

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

1 个答案:

答案 0 :(得分:2)

线程必须具有某种连接才能使其正常工作。如果线程1具有对线程2的引用,则锁定和条件变量可以在线程2中,反之亦然。

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

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