I have a thread, A
, which performs periodic actions inside a while(running)
loop. I then have another thread,B
, which listens for user input. When the user presses a button, thread B
spawns a new thread to perform a task (let's call it an instance of Thread C
). This task involves sending information over the internet and can take up to 20 seconds. There can be more than one instance of C
active at once.
The problem I am having is this. I would like thread A
to only run it's code if there are no threads of type 'C' currently active. To be more clear, thread A looks something like this:
class ThreadA extends Thread{
public void run(){
while(running){
performAction();
Thread.sleep(1000);
}
}
}
If an instance of C
is detected, then obviously I would not like performAction()
to be called. If the thread is currently executing performAction()
, then I would like to stop its execution at its current progress.
I'm not sure how to proceed, as I'm not sure how I would obtain a reference of the spawned threads from inside thread A.