迎難而上
先看一下java線程運(yùn)行時(shí)各個(gè)階段的運(yùn)行狀態(tài) java實(shí)現(xiàn)多線程有兩種方法
1、繼承Thread類
2、實(shí)現(xiàn)Runnable接口
這兩種方法的共同點(diǎn):
不論用哪種方法,都必須用Thread(如果是Thead子類就用它本身)產(chǎn)生線程,然后再調(diào)用start()方法。
兩種方法的不同點(diǎn):
1、繼承Thread類有一個(gè)缺點(diǎn)就是單繼承,而實(shí)現(xiàn)Runnable接口則彌補(bǔ)了它的缺點(diǎn),可以實(shí)現(xiàn)多繼承
2、繼承Thread類必須如果產(chǎn)生Runnable實(shí)例對(duì)象,就必須產(chǎn)生多個(gè)Runnable實(shí)例對(duì)象,然后再用Thread產(chǎn)生多個(gè)線程;而實(shí)現(xiàn)Runnable接口,只需要建立一個(gè)實(shí)現(xiàn)這個(gè)類的實(shí)例,然后用這一個(gè)實(shí)例對(duì)象產(chǎn)生多個(gè)線程。即實(shí)現(xiàn)了資源的共享性 基于以上兩點(diǎn)所以建議用第二種方法
下面用例子來(lái)做說(shuō)明
程序1:
程序的運(yùn)行結(jié)果是:
這是繼承了Thread類,第一種方法產(chǎn)生多個(gè)Runnable實(shí)例對(duì)象,然后用Thread產(chǎn)生多個(gè)線程
第二種方法,因?yàn)檫@個(gè)類已經(jīng)繼承了Thread類,所以就可以直接利用它本身產(chǎn)生多個(gè)線程
程序2:
程序運(yùn)行結(jié)果:
這個(gè)程序是實(shí)現(xiàn)Runnable了,產(chǎn)生一類的實(shí)例對(duì)象,然后用Thread產(chǎn)生多個(gè)線程。
posted on 2010-11-07 18:11 馮魁 閱讀(7733) 評(píng)論(0) 編輯 收藏
Powered by: BlogJava Copyright © 馮魁