关于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多线程的一个有趣的现象的主要内容,如果未能解决你的问题,请参考以下文章

C#关于定时器和多线程中对控件的操作以及界面假死的现象。

java多线程Race Condition现象及产生的原因

Java多线程同步问题:一个小Demo完全搞懂

JAVA-初步认识-第十三章-多线程(线程安全问题的现象)

c# 多线程运行时出现主界面卡死现象如何解决?

Java线程和多线程(十四)——Synchronized关键字解析