sleep不放棄鎖,wait放棄例項

2021-06-27 12:57:10 字數 1269 閱讀 8721

/**

* thread sleep和wait區別

* @author dreamsea

* 2012-1-15

*/public class threadtest implements runnable

}public void secondmethod() throws exception

}@override

public void run() catch (exception e)

}public static void main(string args) throws exception

}複製**

使用sleep()方法輸出結果:【顯示輸出】

使用wait()方法輸出結果:【顯示輸出】

我們來大致分析一下此段**,main()方法中例項化threadtest並啟動該執行緒,然後呼叫該執行緒的乙個方法(secondmethod()),因為在主線程中呼叫方法,所以呼叫的普通方法secondmethod())會先被執行(但並不是普通方法執行完畢該物件的執行緒方法才執行,普通方法執行過程中,該執行緒的方法也會被執行,他們是交替執行的,只是在主線程的普通方法會先被執行而已),所以程式執行時會先執行secondmethod(),而secondmethod()方法**片段中有synchronized block,因此secondmethod方法被執行後,該方法會占有該物件機鎖導致該物件的執行緒方法一直處於阻塞狀態,不能執行,直到secondemethod釋放鎖;

使用thread.sleep(2000)方法時,因為sleep在阻塞執行緒的同時,並持有該物件鎖,所以該物件的其他同步執行緒(secondmethod())無法執行,直到synchronized block執行完畢(sleep休眠完畢),secondmethod()方法才可以執行,因此輸出結果為number*200+100;

使用this.wait(2000)方法時,secondmethod()方法被執行後也鎖定了該物件的機鎖,執行到this.wait(2000)時,該方法會休眠2s並釋當前持有的鎖,此時該執行緒的同步方法會被執行(因為secondmethod持有的鎖,已經被wait()所釋放),因此輸出的結果為:number+100;

【顯示流程】

sleep()和wait()方法的區別已經講解完畢,若對執行緒有興趣的童鞋我在諾諾的問問:在main方法中最後行加入「system.out.println("number="+threadtest.number);」猜猜會輸出什麼結果。。。j

複製**

不拋棄,不放棄

最近看了一部軍旅題材的電視劇集 士兵突擊 這部 也是現在網上最火的一部電視連續劇。看後,感慨很深。不拋棄,不放棄 說的好!這句話使我聯想了好多身邊的事情。小時候,我最羨慕的就是當兵,我的最大夢想就是當兵。每當我看到老爸以前當兵時的 就羨慕的不得了。老爸當年,身穿綠色軍裝,後背揹著衝鋒槍。那神氣勁兒。...

不拋棄,不放棄

在這個月裡,自己已經漸漸的熟悉這個網路環境,每週都會和 拼個你死我活,雖然說寫哪個 都不容易,都會讓自己費一番腦筋,自己也會抓耳撓腮,有時甚至會因此而悶悶不樂,但還是難以掩飾當經過一番苦戰後,得勝的喜悅 興奮和得意。現在想想當時填志願時是有多麼不情願,在家長的威逼利誘之下報了計算機,自己心裡多少還是...

TensorFlow入門到不放棄

博主是做android開發的,前一段時間抽空學習了一下谷歌粑粑的tensorflow,它的強大之處,我就不用介紹了,電梯直達中文社群。由於忙著公司的事情,我基本上在晚上10點後開始學習的,所以學習效率不高,再加上之前python也是抽空學的,所以tensorflow真的只能算初窺門徑。下面我就將這段...