I want to write a program where two separate threads run two objects and one thread waits to execute its code till it is signalled by the other.

Now to do this I want to use the Condition interface.

I am unable to figure out where to declare the lock and condition variables in my code such that both classes have access to it.

What I want to ask is, how do threads share the lock and condition variables so that it is ensured that they are signalling and waiting on the same condition.

有帮助吗?

解决方案

The threads will have to have some sort of connection for this to work. If thread 1 has a reference to thread 2, the lock and condition variables may be in thread 2 and vice versa.

If not, the variables will have to be in a separate class which both threads have access to. So, you'll have to pass the same instance of that class to both threads, so that instance becomes a shared resource. Following example assumes you have classes Thread1 and Thread2 that extends Thread with a constructor taking SharedResource as an argument:

SharedResource sr = new SharedResource();
Thread1 t1 = new Thread1(sr);
Thread2 t2 = new Thread2(sr);
t1.start();
t2.start();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top