先看一下java線程運作時各個階段的運作狀态
java實作多線程有兩種方法
1、繼承thread類
2、實作runnable接口
這兩種方法的共同點:
不論用哪種方法,都必須用thread(如果是thead子類就用它本身)産生線程,然後再調用start()方法。
兩種方法的不同點:
1、繼承thread類有一個缺點就是單繼承,而實作runnable接口則彌補了它的缺點,可以實作多繼承
2、繼承thread類必須如果産生runnable執行個體對象,就必須産生多個runnable執行個體對象,然後再用thread産生多個線程;而實作runnable接口,隻需要建立一個實作這個類的執行個體,然後用這一個執行個體對象産生多個線程。即實作了資源的共享性
基于以上兩點是以建議用第二種方法
下面用例子來做說明
程式1:
package com.dr.runnable1;
//一個類隻要繼承了thread類,則此類就是多線程類
class mythread extends thread
{
private string name;
public mythread(string name)
this.name=name;
}
//如果要使用多線程,則必須有一個方法的主體
public void run()
//列印輸出
for(int i=0;i<10;i++)
system.out.println(this.name+"----->運作、、、、");
}
}
public class demo1
public static void main(string args[])
//第一種方法
runnable r1=new mythread("線程a");
runnable r2=new mythread("線程b");
runnable r3=new mythread("線程c");
thread t1=new thread(r1);
thread t2=new thread(r2);
thread t3=new thread(r3);
t1.start();
t2.start();
t3.start();
// mt1.run();//線程執行,使用start方法
// mt2.run();
// mt3.run();
//第二種方法
// mythread mt1=new mythread("線程a");
// mythread mt2=new mythread("線程b");
// mythread mt3=new mythread("線程c");
// mt1.start();
// mt1.start();//線程隻能啟動一次
// mt2.start();
// mt3.start();
}
}
程式的運作結果是:
這是繼承了thread類,第一種方法産生多個runnable執行個體對象,然後用thread産生多個線程
第二種方法,因為這個類已經繼承了thread類,是以就可以直接利用它本身産生多個線程
程式2:
class mythread1 implements runnable
private int ticket=10;
for(int i=0;i<500;i++)
if(this.ticket>0)
system.out.println("賣票----->"+(this.ticket--));
}
public class demo2
mythread1 mt=new mythread1();
thread t1=new thread(mt);
thread t2=new thread(mt);
thread t3=new thread(mt);
t1.start();
t2.start();
t3.start();
程式運作結果:
這個程式是實作runnable了,産生一類的執行個體對象,然後用thread産生多個線程。
打賞
<b></b>贊
<b></b>收藏
<b></b>評論
分享
微網誌
微信
舉報
上一篇:簡單應用小程式(類與類之間的關系調用)
下一篇:用多線程模拟生産零件系統程式
java實作多線程的兩種方式比較及差別,線程程式設計的兩種方法,python實作獎金計算兩種方法的比較,(轉載)java雲計算兩種方法的比較,java多線程實作的兩種方式,java 多線程的兩種方法,java中實作多線程般使用兩種方法,java建立線程的兩種方法,java建立程序的兩種方法,java聲明變量的兩種方法