使用runnable接口:使用Thread子類(lèi)創(chuàng )建線(xiàn)程的優(yōu)點(diǎn)是:可以在子類(lèi)中增加新的成員變量,使線(xiàn)程具有某種屬性,也可以在子類(lèi)中新增加方法,使線(xiàn)程具有某種功能。 但是,Java不支持多繼承,Thread類(lèi)的子類(lèi)不能再擴展其他的類(lèi)。 線(xiàn)程的使用方法:1.start() : 線(xiàn)程調用該方法將啟動(dòng)線(xiàn)程,使之從新建狀態(tài)進(jìn)入就緒隊列排隊,一旦輪到它來(lái)享用CPU資源時(shí),就可以脫離創(chuàng )建它的線(xiàn)程獨立開(kāi)始自己的生命周期了。 2.run(): Thread類(lèi)的run()方法與Runnable接口中的run()方法的功能和作用相同,都用來(lái)定義線(xiàn)程對象被調度之后所執行的操作,都是系統自動(dòng)調用而用戶(hù)程序不得引用的方法。 3.sleep(int millsecond): 優(yōu)先級高的線(xiàn)程可以在它的run()方法中調用sleep方法來(lái)使自己放棄CPU資源,休眠一段時(shí)間。 4.isAlive(): 線(xiàn)程處于“新建”狀態(tài)時(shí),線(xiàn)程調用isAlive()方法返回false。在線(xiàn)程的run()方法結束之前,即沒(méi)有進(jìn)入死亡狀態(tài)之前,線(xiàn)程調用isAlive()方法返回true. 5.currentThread():該方法是Thread類(lèi)中的類(lèi)方法,可以用類(lèi)名調用,該方法返回當前正在使用CPU資源的線(xiàn)程。 6.interrupt() :一個(gè)占有CPU資源的線(xiàn)程可以讓休眠的線(xiàn)程調用interrupt()方法“吵醒”自己,即導致休眠的線(xiàn)程發(fā)生InterruptedException異常,從而結束休眠,重新排隊等待CPU資源。 線(xiàn)程同步:在處理多線(xiàn)程問(wèn)題時(shí),我們必須注意這樣一個(gè)問(wèn)題:當兩個(gè)或多個(gè)線(xiàn)程同時(shí)訪(fǎng)問(wèn)同一個(gè)變量,并且一個(gè)線(xiàn)程需要修改這個(gè)變量。我們應對這樣的問(wèn)題作出處理。 所謂線(xiàn)程同步就是若干個(gè)線(xiàn)程都需要使用一個(gè)synchronized修飾的方法.即程序中的若干個(gè)線(xiàn)程都需要使用一個(gè)方法,而這個(gè)方法用synchronized給予了修飾。 多個(gè)線(xiàn)程調用synchronized方法必須遵守同步機制:當一個(gè)線(xiàn)程使用這個(gè)方法時(shí),其他線(xiàn)程想使用這個(gè)方法時(shí)就必須等待,直到線(xiàn)程使用完該方法。在使用多線(xiàn)程解決許多實(shí)際問(wèn)題時(shí),可能要把某些修改數據的方法用關(guān)鍵字synchronized來(lái)修飾 |