2017-01-26 64 views
0

當路過一個List<T>線程附加到List,並確保,將可運行此主題已執行完畢(我需要中途打斷它,獲得到那時爲止所計算的數據),從調用線程中使用List是否安全?從不同的線程添加到列表

我在我的代碼中使用這種方法,它似乎工作,但我不能動搖我只是越來越幸運的感覺,因爲我的列表中的數據不易變,列表本身不提供同步訪問。

我最好用Collections.synchronizedList(..)作爲累加器,當我需要列表在我的主線程(中斷計算線程後)複製內容?

代碼示例:

List<MyData> accList = new ArrayList<>(); 
Future<?> compFuture = executor.submit(new ComputationRunnable(accList)); 
// The Runnable will add elements to the List 
compFuture.cancel(true); 
// Interrupt is caught in the Runnable and it returns null 
// Try Future.get() to see if the Future was correctly cancelled, ignore Exception 
compFuture.get(); 
useList(accList); 
+0

您對「save」的定義是什麼?顯然,計算是否完成並不重要... – Fildor

+0

您的用例不清楚,您能否顯示一些代碼以便我們更好地理解您的問題? –

+0

添加了我的代碼的短暫細分。 –

回答

相關問題