java實現多線程有兩種方法

java實現多線程有兩種方法
 
1、繼承Thread類
 
2、實現Runnable接口
 

1)一般認爲:實現Runnable接口的對象,其着眼點主要含義是:一個計算任務.它代表一個要被其它線程(如:線程池中的線程)執行的任務.着眼點是:交由其它人去完成的一個計算任務. ---對應着:要做的工作

2)一般認爲:從Thread類繼承的含義主要是:一個能執行其它(或自己)的任務的一個線程對象.着眼點是:線程的功能(通過繼承來擴展執行其它計算任務的能力) ---對應着:做工作的工作人員

3)當然:若一個類已有父親,不能再從Thread類繼承,只好實現Runnable接口來達到線程的目的,這是一種選擇了.


這兩種方法的共同點:
 
不論用哪種方法,都必須用Thread(如果是Thead子類就用它本身)產生線程,然後再調用start()方法。
 
兩種方法的不同點:繼承Thread類有一個缺點就是單繼承,而實現Runnable接口則彌補了它的缺點,可以實現多繼承
 

下面用例子來做說明
 
程序1:


 

 

程序的運行結果是:

這是繼承了Thread類,第一種方法產生多個Runnable實例對象,然後用Thread產生多個線程

 

 


 

第二種方法,因爲這個類已經繼承了Thread類,所以就可以直接利用它本身產生多個線程

程序2:

 

程序運行結果:

賣票----->10

賣票----->9

賣票----->8

賣票----->7

賣票----->6

賣票----->5

賣票----->4

賣票----->3

賣票----->2

賣票----->1

把以下代碼稍稍改動一下:

 

程序運行結果發生瞭如下變化:

 

賣票----->7

賣票----->7

賣票----->7

賣票----->4

賣票----->4

賣票----->2

賣票----->1

賣票----->0

賣票----->0

賣票----->0

這就是所謂的線程不安全。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章