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);
您對「save」的定義是什麼?顯然,計算是否完成並不重要... – Fildor
您的用例不清楚,您能否顯示一些代碼以便我們更好地理解您的問題? –
添加了我的代碼的短暫細分。 –