Thread 与Runnable区别详解
生活随笔
收集整理的這篇文章主要介紹了
Thread 与Runnable区别详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//使用Thread實現線程不能實現資源共享
class MyThread extends Thread
{ private int ticket=5;private String name;public MyThread(String name ){this.name=name;}public void run(){for(int i=0;i<10;i++){if(ticket>5){System.out.println("線程"+name+"賣票"+i);}}}
}public class ThreadDemo02
{public static void main(String args[]){MyThread A = new MyThread("A"); //實例化兩個要執行的任務。下面創建了領個線程分別一個執行任務MyThread B = new MyThread("B");A.start();B.start();}
}
//使用Runnable實現線程可以實現資源共享 class MyThread implements Runnable {private int ticket=5;private String name;public MyThread(String name){this.name=name;}public void run(){for(int i=1;i<=10;i++){if(ticket>0){System.out.println("線程"+name+"賣票"+(ticket--));}}} } public class RunnableDemo02 {public static void main(String args[]){MyThread A = new MyThread("A"); //實例化線程要執行的任務Thread Ta = new Thread(A); //實例兩個線程對象,實際傳遞的是一個任務Thread Tb = new Thread(A); //因為兩個線程執行的是一個任務,所以資源是共享的Ta.start();Tb.start();} }因為一個線程只能啟動一次,通過Thread實現線程時,線程和線程所要執行的任務是捆綁在一起的。也就使得一個任務只能啟動一個線程,不同的線程執行的任務是不相同的,所以沒有必要,也不能讓兩個線程共享彼此任務中的資源。
? 轉載自: http://blog.csdn.net/xiaoya629/article/details/5507252
//使用Runnable實現線程可以實現資源共享 class MyThread implements Runnable {private int ticket=5;private String name;public MyThread(String name){this.name=name;}public void run(){for(int i=1;i<=10;i++){if(ticket>0){System.out.println("線程"+name+"賣票"+(ticket--));}}} } public class RunnableDemo02 {public static void main(String args[]){MyThread A = new MyThread("A"); //實例化線程要執行的任務Thread Ta = new Thread(A); //實例兩個線程對象,實際傳遞的是一個任務Thread Tb = new Thread(A); //因為兩個線程執行的是一個任務,所以資源是共享的Ta.start();Tb.start();} }因為一個線程只能啟動一次,通過Thread實現線程時,線程和線程所要執行的任務是捆綁在一起的。也就使得一個任務只能啟動一個線程,不同的線程執行的任務是不相同的,所以沒有必要,也不能讓兩個線程共享彼此任務中的資源。
一個任務可以啟動多個線程,通過Runnable方式實現的線程,實際是開辟一個線程,將任務傳遞進去,由此線程執行。可以實例化多個 Thread對象,將同一任務傳遞進去,也就是一個任務可以啟動多個線程來執行它。這些線程執行的是同一個任務,所以他們的資源是共享。
兩種不同的線程實現方式本身就決定了其是否能進行資源共享。
? 轉載自: http://blog.csdn.net/xiaoya629/article/details/5507252
總結
以上是生活随笔為你收集整理的Thread 与Runnable区别详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java数据类型转换全解
- 下一篇: 线程中断问题详解