关于JAVA多线程的一个有趣的现象

模拟一个售票系统,或者银行取钱。

class 银行{

  synchronized getmoney(){

    //这里要sleep,为了延缓速度。

  }

}

class 顾客 extends Thread{

  取钱(){

    循环100次{

       getmoney() 

        //有趣的是,这里也需要休眠。       

    }

  }

}

class  test{

  main(){

    顾客1.start()

    顾客2.start()

  }

}

这样的题目,以前只在取钱的时候,有sleep的需要,没想到写的时候才发现。循环的地方也要休眠。

否则就会出现,顾客1 完成后,顾客2才开始的情况。

感觉,循环会一次性把100次取钱的任务都发出去,尽管每次取钱都比较慢(要sleep一下),但是任务分发却很快。

并不是取钱后,回到循环处,再去随机决定顾客N执行。

猜你喜欢

转载自www.cnblogs.com/javandroid/p/8989741.html
今日推荐