synchronized 對象鎖

當沒有明確的對象作爲鎖,只是想讓一段代碼同步時,可以創建一個特殊的instance變量(它得是一個對象)來充當鎖:

class Foo implements Runnable

{

        private byte[] lock = new byte[0]; // 特殊的instance變量

        Public void methodA() 
        {

           synchronized(lock) { //… }

        }

        //…..

}

注:零長度的byte數組對象創建起來將比任何對象都經濟――查看編譯後的字節碼:生成零長度的byte[]對象只需3條操作碼,而Object lock

= new Object()則需要7行操作碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章