java 多線程 繼承Thread和實現Runnable的區別


1)繼承Thread:

public class ThreadTest extends Thread
{
private int count;
private String name;

public ThreadTest(int count,String name){
this.count = count;
this.name = name;
}

public void run()
{
while(count>0)
{
System.out.println(name+"買票 "+count--);
}
}

public static void main(String []args)
{
ThreadTest t1 = new ThreadTest(10,"1號窗口");
ThreadTest t2 = new ThreadTest(10,"2號窗口");
t1.start();
t2.start();
}
}

 

運行結果:

1號窗口買票 10
1號窗口買票 9
1號窗口買票 8
2號窗口買票 10
1號窗口買票 7
2號窗口買票 9
1號窗口買票 6
2號窗口買票 8
1號窗口買票 5
2號窗口買票 7
1號窗口買票 4
2號窗口買票 6
1號窗口買票 3
2號窗口買票 5
1號窗口買票 2
2號窗口買票 4
1號窗口買票 1
2號窗口買票 3
2號窗口買票 2
2號窗口買票 1

2)實現Runnable接口

public class hello implements Runnable{

private int ticket=19;

@Override
public void run() {
for(int i=0;i<20;i++){
if(this.ticket >0){
System.out.println(Thread.currentThread().getName()+"正在買票"+this.ticket--);
}
}
}

public static void main(String[] args){
hello h1 = new hello();
new Thread(h1,"3號窗口").start();
new Thread(h1,"1號窗口").start();
new Thread(h1,"2號窗口").start();

}

}

運行結果:

1號窗口正在買票19
2號窗口正在買票18
3號窗口正在買票19
2號窗口正在買票16
1號窗口正在買票17
2號窗口正在買票14
3號窗口正在買票15
2號窗口正在買票12
1號窗口正在買票13
2號窗口正在買票10
3號窗口正在買票11
2號窗口正在買票8
1號窗口正在買票9
2號窗口正在買票6
3號窗口正在買票7
2號窗口正在買票4
1號窗口正在買票5
2號窗口正在買票2
3號窗口正在買票3
1號窗口正在買票1

 

從上面的運行結果可以看出:繼承Thread實現的模式是  定義多個線程,各自完成各自的任務.  實現Runnable實現的模式是  定義多個線程,實現一個任務.

其實在實現一個任務用多個線程來做也可以用繼承Thread類來實現只是比較麻煩,一般我們用實現Runnable接口來實現,簡潔明了。

大多數情況下,如果只想重寫 run() 方法,而不重寫其他 Thread 方法,那么應使用 Runnable 接口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM