Domanda

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.

È stato utile?

Soluzione

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top