作者:
lueichun (no anonymous)
2018-12-15 12:30:42我寫了一段存取靜態變數的code:
public class SetConnectionsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
......
public static List<Connection> list = new ArrayList<>();
}
然後我透過多執行緒,取得connection物件,並寫入上面那個arrayList:
SetConnectionForMultiThread[] smtArray = new SetConnectionForMultiThread[200];
Thread[] thrArray = new Thread[200];
int j = 0;
for(int i = 0;i<200;i++){
smtArray[j] =
new SetConnectionsForMultiThread();
thrArray[j] = new Thread(smtArray[j]);
thrArray[j].start();
j++;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
然後在SetConnectionForMultiThread這個class裡:
public class SetConnectionForMultiThread implements Runnable{
public void run(){
......
SetConnectionsServlet.list.add(connection);
}
}
作者:
ssccg (23)
2018-12-15 13:14:00沒有差,不是其他地方寫錯就是判斷有沒有加的方法是錯的另外會被多個thread存取的list需要synchronize
作者:
gasbomb (虛空雷神獸)
2018-12-15 13:16:00原本class底下寫一個addList()給其他class用比較妥當吧
作者: AI3767 (AIIA) 2018-12-15 22:38:00
我寫一個測試是ok的, 但,你有兩個不同類別名的 Multi
作者:
pttworld (批踢踢世界)
2018-12-16 13:21:00貼文是手誤嗎,迴圈跑的j根本沒加1啊i跑到200,可是j根本沒動吧
作者: AI3767 (AIIA) 2018-12-16 23:44:00
SetConnectionForMultiThread vs. SetConnections...