java多執行緒的幾種實現方法
阿新 • • 發佈:2019-01-05
方法一:繼承Thread類,覆蓋方法run(),
public class MyThread extends Thread { int count= 1, number; public MyThread(int num) { number = num; System.out.println("建立執行緒 " + number); } public void run() { while(true) { System.out.println("執行緒 " + number + ":計數 " + count); if(++count== 6) return; } } public static void main(String args[]) { for(int i = 0; i < 5; i++) new MyThread(i+1).start(); } }
方法二:實現Runnable介面
但是 Runnable 介面並沒有任何對執行緒的支援,我們還必須建立 Thread 類的例項,這一點通過 Thread 類的建構函式public Thread(Runnable target);來實現。
public class MyThread implements Runnable { int count= 1, number; public MyThread(int num) { number = num; System.out.println("建立執行緒 " + number); } public void run() { while(true) { System.out.println("執行緒 " + number + ":計數 " + count); if(++count== 6) return; } } public static void main(String args[]) { for(int i = 0; i < 5; i++) new Thread(new MyThread(i+1)).start(); } }
也可以設定讓當前執行緒休眠,用Thread裡的sleep方法
如:
public static void main(String[] args) { DoSomething dothing = new DoSomething(); Thread t1 = new Thread(dothing); t1.start(); //這裡就是樓主提的問題,啟動執行緒,執行上面寫的run()方法 for (int i = 0; i < 5; i++) { //主執行緒 System.out.println("主執行緒do something"); try { Thread.sleep(1000); //休眠1秒 } catch (Exception e) {} } }
直接啟動run()與用start()啟動run方法的區別