JAVA的for each在多執行緒環境下問題

2021-05-02 20:39:53 字數 593 閱讀 1409

在網路的廣播訊息中,經常需要對一些陣列或者collection等等做遍歷傳送資訊。

隨之而來的for each就遇到這個問題了,例如:

broadcastmessage(collectioni)

for(***: i.values()) {

.....

傳進來的引數是在某乙個時刻固定的,但是並不能保證在for each迴圈中對物件遍歷時物件的數量不發生變化,我們只能保證在某乙個時刻物件的數量是固定的即可,如果增加了可以拋棄,減少的就做一些相應的處理。經過修改後的**如下:

int playersize = i.size();

int i = 0, subsize = 0;

// 採用iterator方式

for(iteratorit = i.iterator(); it.hasnext() && i < playersize; i++) {

player player = it.next();

// 已經刪除的資料

if(player == null)

subsize++;

//知道已經刪除的資料可以做邏輯的相應處理

if(subsize > 0)

CLLocationManager在多執行緒下使用

似乎定位的返回 呼叫 只能有主線程來呼叫,並且這個物件還必須是在主線程建立的。做過以下實驗 1.子執行緒中 self.locationmanager cllocationmanager alloc init autorelease locationmanager.delegate self loca...

在windows下配置pthread多執行緒

pthread是由posix提出的一套通用的執行緒庫,在linux平台下,它被廣泛的支援,而windows平台下,卻並不被支援,而pthreads w32為我們提供了解決方案,本文我們準備在我們的windows平台下進行pthread w32的安裝,在網路上有類似的文章,但是講的都是比較老的平台,在...

JAVA中的for each迴圈

for each是jdk5.0新增加的乙個迴圈結構,可以用來以此處理陣列中的每個元素 其他型別的元素集合也可以 而不用為指定下標而分心。格式如下 for variable collection statement 定義乙個變數用於暫存集合中的每乙個元素,並執行相應的語句 當然,也可以是語句塊 集合表...