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

Posted javandroid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JAVA多线程的一个有趣的现象相关的知识,希望对你有一定的参考价值。

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

 

class 银行{

  synchronized getmoney(){

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

  }

}

 

class 顾客 extends Thread{

  取钱(){

    循环100次{

       getmoney() 

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

    }

  }

}

 

class  test{

  main(){

    顾客1.start()

    顾客2.start()

  }

}

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

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

 

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

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

 

以上是关于关于JAVA多线程的一个有趣的现象的主要内容,如果未能解决你的问题,请参考以下文章