1. 程式人生 > >關於JAVA多線程的一個有趣的現象

關於JAVA多線程的一個有趣的現象

有趣的 決定 sleep zed sync end AR 但是 執行

模擬一個售票系統,或者銀行取錢。

class 銀行{

  synchronized getmoney(){

    //這裏要sleep,為了延緩速度。

  }

}

class 顧客 extends Thread{

  取錢(){

    循環100次{

       getmoney() 

        //有趣的是,這裏也需要休眠。       

    }

  }

}

class test{

  main(){

    顧客1.start()

    顧客2.start()

  }

}

這樣的題目,以前只在取錢的時候,有sleep的需要,沒想到寫的時候才發現。循環的地方也要休眠。

否則就會出現,顧客1 完成後,顧客2才開始的情況。

感覺,循環會一次性把100次取錢的任務都發出去,盡管每次取錢都比較慢(要sleep一下),但是任務分發卻很快。

並不是取錢後,回到循環處,再去隨機決定顧客N執行。

關於JAVA多線程的一個有趣的現象