- SingleThreaded Execution
一次只允許一個線程執行 - 擴展
2.1 原子操作
基本類型、引用類型的賦值和引用是原子操作
long和double的賦值和引用是非原子操作
long或double在線程間共享時,需要將其放入synchronized中操作,或者聲明爲volatile - sleep方法和interrupt方法
線程調用sleep方法休眠時,可以調用Thread.interrept()方法中斷,此時調用Thread.interrput()方法隨時可以調用,不需要事先獲取鎖 - wait方法和interrupt方法
調用Thrad.interrupt()方法意在告訴線程不用等待notify/notifyAll,直接從等待隊列中出來。注意:線程在進入等待隊列時,已經釋放了鎖。當正在wait的線程被調用interrupt方法時,該線程會在重新獲取鎖之後拋出InterruptedException異常。在獲取鎖之前,線程不會拋出InterruptedException異常。 - notify和interrput比較
notify是java.lang.Object類方法,喚醒該實例等待隊列中的線程,而不是直接指定的線程。nofitfy/notifyAll喚醒的線程會繼續執行wait的下一條語句。執行notify/notifyAll時,線程必須要獲取實例的鎖。
interrupt方法時java.lang.Thread類的靜態方法,可以直接指定線程並喚醒。當被interrupt的線程處於sleep或者wati中時,會拋出InterruptedException異常。執行interrupt(取消其他線程)時並不需要獲取要取消的線程的鎖。
一、Java多線程設計模式-SingleThreaded Execution
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.