七年開發經驗告訴你java 多執行緒Thread與Runnable的區別
1.Runnable適合多執行緒操作同一資源。
2.Runnable介面可以避免java單繼承帶來的侷限
3.Runnable增強程式碼健壯性,程式碼被多個執行緒共享
測試:
[java] view plain copy
package main.uitls;
publicclass Demo {
publicstaticvoid main(String[] arg0){
Mythread m1 = new Mythread();
Mythread m2 = new Mythread();
Mythread m3 = new Mythread();
m1.start();
m2.start();
m3.start();
/*MyRunnable myRunnable =new MyRunnable();
Thread m1 = new Thread(myRunnable);
Thread m2 = new Thread(myRunnable);
Thread m3 = new Thread(myRunnable);
m1.start();
m2.start();
m3.start();*/
}
}
class Mythread extends Thread{
publicint num = 5;
publicvoid run() {
for(int i=100;i > 0;i--){
if(num>0){
System.out.println("當前剩餘票數:"+num--);
}
}
}
}
class MyRunnable implements Runnable{
publicint num = 5;
publicvoid run() {
for(int i=100;i > 0;i--){
if(num>0){
System.out.println("當前剩餘票數:"+num--);
}
}
}
}
當使用Thread時,多個執行緒之間資料沒有共享,返回的結果為(每次執行結果可能不同)
[html] view plain copy
當前剩餘票數:5
當前剩餘票數:4
當前剩餘票數:3
當前剩餘票數:5
當前剩餘票數:2
當前剩餘票數:5
當前剩餘票數:1
當前剩餘票數:4
當前剩餘票數:3
當前剩餘票數:2
當前剩餘票數:4
當前剩餘票數:1
當前剩餘票數:3
當前剩餘票數:2
當前剩餘票數:1
當使用Runnable時縣城之間資料共享:
[java] view plain copy
MyRunnable myRunnable =new MyRunnable();
Thread m1 = new Thread(myRunnable);
Thread m2 = new Thread(myRunnable);
Thread m3 = new Thread(myRunnable);
m1.start();
m2.start();
m3.start();
結果為:
[html] view plain copy
當前剩餘票數:5
當前剩餘票數:3
當前剩餘票數:4
當前剩餘票數:1
當前剩餘票數:2
寫在最後:歡迎留言討論,加關注,持續更新!!!