[问题] 关于静态变量的存取

楼主: 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...

Links booklink

Contact Us: admin [ a t ] ucptt.com