假設我有3個執行線程,下面介紹每個線程將執行的操作。複雜線程控制
線程1 - 主線程 線程2 - 檢測器線程 線程3 - 動作螺紋
當線程1周開始,它產生線2線程2將簡單地同時運行的線程1和搜索的事件。當事件發生時,我想讓線程2產生一個新的線程,線程3.我想讓線程3與線程1連接。這可能嗎?
示例代碼:
public class ThreadA {
// variable to flag if ThreadB should still loop
private static boolean runThreadB = true;
public void mainMethod() {
new ThreadB().start();
// do some stuff
// make sure thread B can end
runThreadB = false;
}
// inner class/Thread B
class ThreadB extends Thread {
@Override
public void run() {
// loop until Thread A is done
while (runThreadB) {
// wait for event, if event is found, spawn thread C
ThreadC threadC = new ThreadC();
threadC.start();
/**
* Need thread C to somehow join ThreadA
*/
try {
threadC.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public class ThreadC extends Thread {
@Override
public void run() {
// perform some tasks
}
}
是的,這是可能的。但是很多事情都是可能的,包括無意義的東西,以及沒有提供實用性的東西。你可能會問更具體的問題,比如「這是個好主意」,還是這裏是我的代碼,爲什麼它不起作用? –
「*加入線程1 *」是什麼意思? –
如果線程1會產生兩個線程,然後等待一個或兩個線程完成,會不會更簡單? – Vadim