Posted on 2007-04-09 00:02
sunbaby 閱讀(315)
評(píng)論(0) 編輯 收藏 所屬分類:
JAVA技術(shù)點(diǎn)滴
線程概念的引入是為了實(shí)現(xiàn)并行處理,從而提高程序的效率。Java中的線程實(shí)現(xiàn)非常簡(jiǎn)單,可以用兩種方式來(lái)創(chuàng)建線程,一種是實(shí)現(xiàn)Runnable接口,另一種是繼承Thread類重寫run()方法。兩種方式唯一的不同就是前者保留了繼承一個(gè)類的可能(因?yàn)镴ava只支持類的單繼承,但接口沒有此限制)。
永遠(yuǎn)都用start()方法來(lái)啟動(dòng)一個(gè)線程,線程類中的run()可以被直接調(diào)用,但決不是啟動(dòng)一個(gè)線程,二者有著本質(zhì)的區(qū)別。
用同步控制關(guān)鍵字synchronized來(lái)保護(hù)線程敏感數(shù)據(jù),synchronized塊中的內(nèi)容可以保證同一時(shí)刻只能被一個(gè)線程訪問(wèn),所以其中的數(shù)據(jù)是線程安全的。
用Object類中的wait()和notify()方法可以實(shí)現(xiàn)線程間交互,但要記住wait()和notify()方法只有發(fā)生在同一個(gè)對(duì)象上才能真正實(shí)現(xiàn)線程間交互。被某一對(duì)象wait()方法阻塞的線程需要另外一個(gè)調(diào)用了同一對(duì)象notify()的線程干預(yù)才能恢復(fù)運(yùn)行。notify()方法一次喚醒一個(gè)被wait()方法阻塞的線程,notifyAll()方法可以一次喚醒所有被wait()方法阻塞的線程。