可能由于你的两个线程虽然启动了,但是没有完成时mainList = TestList.list;
该语句就执行了,导致一场结果!

解决方案 »

  1.   

    public static void main(String[] args) {
    try {
    ArrayList mainList = new ArrayList();
    new TestList().start();
    new TestList().start();
    Thread.sleep(2000);
    } catch(Exception e) {}
    mainList = TestList.list;
    System.out.println("the mainList size is" + mainList.size());
    for (int i = 0; i < mainList.size(); i++)
    System.out.println(mainList.get(i));
    }
      

  2.   

    那如果我要启动多个线程呢?
    那要sleep多长时间?怎么判断其他的线程是否完成了呢?
      

  3.   

    线程之间的通讯,
    不要使用sleep,太不专业了。
      

  4.   

    具体怎么办?要启动多个线程,都改变static list的值,怎么判断所有的线程都已经执行完了,然后才能再在主线程中调用list的值。
      

  5.   

    可以使用thread.join()方法来使得这个线程完成。
      

  6.   

    弄个interface,定义一个接口函数rollback 
    每个线程都继承这个接口
    在线程结束之前,可以调用rollback说明我这个线程已经结束了。