解决方案 »

  1.   

    两个线程是并行的也就是说两个线程都会运行到然后等待10毫秒。
    也就是说
    sum=sum+m;运行了两次,然后等待10毫秒,然后依次输出如果你对add加锁就可以了
      

  2.   


    class Cus implements Runnable { private Bank bank = new Bank(); @Override
    public void run() {
    for (int i = 0; i < 3; i++) {
    synchronized (this) {// 这里需要加锁,因为你的Bank的实例被多个线程共享了,那么就涉及到多线程抢占资源的问题,应该加锁来达到同步的目的。
    bank.add(100);
    }
    }
    }
    }
      

  3.   

    第一个进程进来之后运行sum=sum+n;此时sum=100。然后休眠;但还没有输出
    第二个进程进来时候运行sum=sum+n;此时sum=200.休眠,也没有输出
    接着第一个醒后才接着运行输出语句,但这时的sum已经是200了
    所以两个都是200
      

  4.   

    应该和sleep有关系吧,我也是初学者,Thread t1=new Thread(c)的时候,通过 Runnable创建了一个线程,此线程通过for循环执行3次,第一次被休眠,让出CPU,第二次到sleep也休眠,让出cpu让第一次继续执行,所以是200,后续的原理一样吧。