我在Android中使用外部庫,該庫有一個從另一個線程訪問的對象的ArrayList。我的問題是我想從這個AarrayList中移動一些對象,而不會在另一個線程上產生空的異常。因此,我想要做的是:我有一個ArrayList ABCDEFGH,並且我想將F從其實際位置移動到第一個位置,因此ArrayList將變爲FABCDEGH。請注意,我不能使用交換,因爲每個其他對象都右移。在ArrayList線程上移動對象的最佳方式是什麼?
一個天真的實現是:
list.remove(F);
list.add(0,F);
但是這種實現導致其他線程,因爲其他線程是循環的,是因爲在競爭條件的線程循環通過手寫計數循環的列表中,空異常可以在刪除和添加F之間運行。由於我無法訪問外部庫,因此無法使ArrayList更安全。
有沒有更好的方法來使這種運動(從任何位置到Arraylist的任何位置)沒有比賽條件?請注意,ArrayList的大小不會被修改。
你是否擁有循環和刪除/添加的代碼?或者循環運行在庫代碼中? – sudocode
循環運行庫代碼 – Akira