[英]child thread to parent thread communication
我正在研究Android上的java多線程應用程序。
線程1:監聽器線程。 繼續監聽套接字,觸發第二個線程進行某些操作
線程2:動作線程。 短暫的。 從第一個線程開始,做一個簡單的動作並死掉。
線程1不會在線程2上等待,因為它在激活線程2后返回到偵聽。
我可以在它結束之前從Thread2執行Thread1中的方法(比如thread2ActionCompleted())。
由於某種原因,我不能在線程1中使用靜態方法或靜態變量
我在使用ExecutorService
看到了一些類似的線程,但是如果它在我的情況下工作則找不到一個好的例子。
像你的問題很簡單,這里是偽代碼。
Thread1 {
run() {
//check condition
//If condition meets create Thread Thread2
//set parent in Thread2
//start Thread2
}
Method m1 {
}
}
Thread1繼續運行,你可以根據你的條件啟動線程2。
Thread2 {
Thread1 parent;
//When done call parent.m1
}
干杯!!
只是更新:我最終將父線程實例作為參數傳遞給子線程的構造函數。 像魅力和我想一次只訪問一次的任何代碼一樣工作,我放入同步塊。
Parent Thread: Thread1
Child Thread: Thread2
class Thread1 extends Thread implements Runnable {
...
Thread2 t2 = new Thread2(this);
new Thread(t2, "ChildThread").start();
...
}
class Thread2 extends Thread implements Runnable {
...
Thread1 t1;
Thread2 (Thread1 t) {
t1 = t;
}
...
t1.CallAnyMethod();
...
}
這是實現觀察者模式的潛在候選者。 線程2能夠在完成它的工作時通知它的所有觀察者(特別是線程1)。
例如:
線程1實現了Observer。
線程2實現了Observable。
當線程2完成時,它會通知所有觀察者它已完成。 這將告訴線程1線程2已完成。
您可能想要的是Future
。 基本上, thread2
會將其結果放在一個與thread1
共享的線程安全的holder對象中。 當thread1
想知道thread2
發生了什么時,它可以檢查Future
對象。
這可以使用ExecutorService
來管理thread2的生命周期並將一個Callable
提交給ExecutorService
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.