實現方式和繼承方式有什麼區別呢?
*區別:
*繼承Thread:線程代碼存放在Thread子類run方法中
*實現Runnable:線程代碼存放在接口的子類的run方法中
*實現方式的好處:避免了單繼承的局限性
*在定義線程時,建議使用實現方式,當然如果一個類沒有繼承父類,那麼也可以通過繼承Thread類來實現多線程
*注意:Runnable接口沒有拋出異常,那麼實現它的類只能是try-catch不能throws
*Java對多線程的安全問題提供了專業的解決方式就是同步代碼塊synchronized(對象){需要同步的代碼}
*同步的前提:
*1.有2個及以上的線程
*2.多個線程使用用一個鎖(對象)
*同步的好處:解決了多線程的安全問題
*同步的弊端:多個線程需要判斷鎖,較為消耗資源
package 多線程;class Ticket implements Runnable{//private static int tick = 100;private int tick=100;Object obj = new Object();//建一像或者自己重新寫一個類來創建一個對像下面同步關鍵字需要用到@Overridepublic void run() {while(true){synchronized(obj)//synchronized(this){if(tick>0){try {Thread.sleep(10);} catch (Exception e) {}System.out.println(Thread.currentThread().getName()+"...售:"+(tick--)+"號票");//tick--;}else {break;}}}}}public class Test {public static void main(String[] args) {Ticket t = new Ticket();//創建一個實現了Runnable接口的類//創建4個多線程對象並傳遞上面接口對像給其構造方法Thread t1 = new Thread(t);//創建了一個線程Thread t2 = new Thread(t);//創建了一個線程Thread t3 = new Thread(t);//創建了一個線程Thread t4 = new Thread(t);//創建了一個線程//開啟線程t1.start();t2.start();t3.start();t4.start();}}以上就是小編為大家帶來的java實現多線程的兩種方式繼承Thread類和實現Runnable接口的方法的全部內容了,希望對大家有所幫助,多多支持武林網~