2010-04-23 29 views

回答

0

您可以將對象傳遞給下載線程的構造函數。只要確保它是線程安全的...

1
  1. 傳遞對象(集?)每個線程(首選)
  2. 聲明它的靜態成員和靜態訪問它。

無論哪種方式,你都需要同步「推杆」。或者,如果它是一個集合,利用其java.util.concurrent當量(如果存在)

如果你不想paralelize下載,而只是開始它在另一個線程,你可能想Callable代替Runnable

3

使用FutureTask會更好 - 使用單獨的線程將數據放入主線程的對象容易出現同步錯誤。

0

您需要將對象傳遞給線程的構造函數並將其分配給字段。這當然會導致同步問題,因爲該對象將被兩個線程「觸摸」,因此您需要使用適當的保護方案。

0

這取決於您的同步需求。你需要修改兩個線程中的對象還是隻能從主線程讀取?但無論如何,最簡單的方法將是使用synchronized代碼:

主線程:

public setObject(Object obj) { 
    synchronized(this) { 
     this.obj = obj; 
    } 
} 

呼叫從所述第二線程的上述方法。您也可以使用LockObjects

也看看Exchanger班。