Object之超級奶爸三

開心一笑

笑一笑十年少

受傷的烏龜
烏龜受傷懒震。讓蝸牛去買藥。過了2個小時荞胡。蝸牛還沒回來。烏龜急了罵道:他媽的再不回來老子就死了了嚎!這時門外傳來了蝸牛的聲音:你他媽再說老子不去了泪漂!

提出問題

解決問題

前面已經自我介紹了,今天是最后一次歪泳,我是超級奶爸萝勤,英文名:Object......這篇介紹完后,我就不再介紹我的夹囚,把機會留給我的子子孫孫們......

wait()

導致線程進入等待狀態(tài)纵刘,直到它被其他線程通過notify()或者notifyAll喚醒。我有幾個哥們:wait(long timeout) 荸哟,wait(long timeout, int nanos) 假哎,timeout時間單位為毫秒,nano是毫微秒......

錯誤寫法
/**
 * Created by 阿毅 on 2016/2/26.
 */
public class TestObejct {

    public synchronized void test() throws InterruptedException{
        Thread thread = Thread.currentThread();//獲得當前線程
        System.out.println("Thread ID:" + thread.getId()  + "Thread Name:" + thread.getName() );
    }
    
}

/**
 * Created by 阿毅 on 2016/2/26.
 */
public class ObjectWaitTest {

    public static void main(String[] args) {

        TestObejct testObejct = new TestObejct();
        try {
            testObejct.test();
            testObejct.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

  • 執(zhí)行結果回報錯
  • Object.wait()和Object.notify()和Object.notifyall()必須寫在synchronized方法內部或者synchronized塊內部
  • synchronized就是針對內存區(qū)塊申請內存鎖(會在之后給出更多鎖的介紹)
正確寫法:
/**
 * Created by 阿毅 on 2016/2/26.
 */
public class TestObejct {

    public synchronized void test() throws InterruptedException{
        Thread thread = Thread.currentThread();//獲得當前線程
        System.out.println("Thread ID:" + thread.getId()  + "Thread Name:" + thread.getName() );
        //wait();//一直傻傻的等鞍历,直到別人叫醒
        wait(1000);//等1s
        //wait(1000,100);//等一秒多啦
    }
}

/**
 * Created by 阿毅 on 2016/2/26.
 */
public class ObjectWaitTest {

    public static void main(String[] args) {
        TestObejct testObejct = new TestObejct();
        try {
            testObejct.test();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Thread thread =  Thread.currentThread();
        System.out.println("Thread ID:" + thread.getId()
                + "Thread Name" + thread.getName());

    }
}

//結果 打印兩次相隔1s
Thread ID:1Thread Name:main
Thread ID:1Thread Namemain

notify()

喚醒在此對象監(jiān)視器上等待的單個線程


> 以下代碼引用:http://www.cnblogs.com/dolphin0520/p/3920385.html

/**
 * Created by 阿毅 on 2016/2/26.
 */
public class ObjectNotifyTest {

    public static Object object = new Object();
    public static void main(String[] args) {
        Thread1 thread1 = new Thread1();
        Thread2 thread2 = new Thread2();

        thread1.start();

        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        thread2.start();
    }

    static class Thread1 extends Thread{
        @Override
        public void run() {
            synchronized (object) {
                try {
                    object.wait();
                } catch (InterruptedException e) {
                }
                System.out.println("線程"+Thread.currentThread().getName()+"獲取到了鎖");
            }
        }
    }

    static class Thread2 extends Thread{
        @Override
        public void run() {
            synchronized (object) {
                object.notify();
                System.out.println("線程"+Thread.currentThread().getName()+"調用了object.notify()");
            }
            System.out.println("線程"+Thread.currentThread().getName()+"釋放了鎖");
        }
    }

}
//運行結果
線程Thread-1調用了object.notify()
線程Thread-1釋放了鎖
線程Thread-0獲取到了鎖
  • 上面代碼都是對object進行加鎖的舵抹。
  • 從上面運行結果可以知道,一個線程被喚醒不代表立即獲取了對象的monitor劣砍,
    只有等調用完notify()或者notifyAll()并退出synchronized塊惧蛹,釋放對象鎖后,其余線程才可獲得鎖執(zhí)行。

notifyAll()

喚醒所有在此對象監(jiān)視器上等待的單個線程

優(yōu)秀文章

http://blog.csdn.net/zyplus/article/details/6672775

美圖

讀書感悟

來自《泰坦尼克號》

  • you jump 香嗓,I jump......
  • 要讓每一天有所值
  • 別這樣迅腔,堅持下去,你明白嗎靠娱?
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末沧烈,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子像云,更是在濱河造成了極大的恐慌锌雀,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迅诬,死亡現場離奇詭異腋逆,居然都是意外死亡,警方通過查閱死者的電腦和手機侈贷,發(fā)現死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門惩歉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铐维,你說我怎么就攤上這事柬泽。” “怎么了嫁蛇?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長露该。 經常有香客問我睬棚,道長,這世上最難降的妖魔是什么解幼? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任抑党,我火速辦了婚禮,結果婚禮上撵摆,老公的妹妹穿的比我還像新娘底靠。我一直安慰自己,他們只是感情好特铝,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布暑中。 她就那樣靜靜地躺著,像睡著了一般鲫剿。 火紅的嫁衣襯著肌膚如雪鳄逾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天灵莲,我揣著相機與錄音雕凹,去河邊找鬼。 笑死,一個胖子當著我的面吹牛枚抵,可吹牛的內容都是我干的线欲。 我是一名探鬼主播,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼汽摹,長吁一口氣:“原來是場噩夢啊……” “哼李丰!你這毒婦竟也來了?” 一聲冷哼從身側響起竖慧,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤嫌套,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后圾旨,有當地人在樹林里發(fā)現了一具尸體踱讨,經...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年砍的,在試婚紗的時候發(fā)現自己被綠了痹筛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡廓鞠,死狀恐怖帚稠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情床佳,我是刑警寧澤滋早,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站砌们,受9級特大地震影響杆麸,放射性物質發(fā)生泄漏。R本人自食惡果不足惜浪感,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一昔头、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧影兽,春花似錦揭斧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茧妒,卻和暖如春萧吠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桐筏。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工纸型, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓狰腌,卻偏偏與公主長得像除破,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子琼腔,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內容