new SaveLock(wang,100).start();
        new SaveLock(wang,200).start();
        new FetchLock(wang,300).start();你这3个顺序没有控制,所以是随机的。

解决方案 »

  1.   


    //我把sleep的时间延长到10;多开了几个进程,执行的顺序每次是15432,debug单步执行是12345
    //可能是synchronized排队顺序的原因,先进后出
            Account wang=new Account("Wang");
            new SaveLock(wang,1000).start();//1
            new SaveLock(wang,200).start();//2
            new FetchLock(wang,300).start();//3
            new FetchLock(wang,400).start();//4
            new SaveLock(wang,100).start();//5
      

  2.   

    感觉有点复杂了,这个线程的调度不是操作系统的事吗?跟Java的synchronized实现机制也有关系?
    我为new的一个FetchLock对象设置低优先级,奇怪它也不是最后执行的。
      

  3.   

    这个代码没写对吧 ,Account类写的不清楚啊,FecthLock 里面什么没做就出来了。
      

  4.   

    main()在FetchLock 类里,java FetchLock 可以运行的。