首先,先貼上一個簡單的線程實例:jvm
public class MyThread extends Thread{ @Override public void run(){ try { for (int i = 0; i < 10; i++){ int time = 1000; Thread.sleep(time); System.out.println("run = " + Thread.currentThread().getName()); } }catch (InterruptedException e){ e.printStackTrace(); } } public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.setName("MyThread"); myThread.start(); try{ for (int i = 0; i < 10; i++){ int time = 1000; Thread.sleep(time); System.out.println("main = " + Thread.currentThread().getName()); } }catch (InterruptedException e){ e.printStackTrace(); } } }
運行結果以下:ide
由運行結果能夠看出,程序中有兩個線程,一個是主線程,另外一個是我手動建立的線程,主線程都是jvm建立的。this
線程執行start()方法不表明線程的啓動順序,以下例:spa
public class MyThread extends Thread{ private int i; public MyThread(int i){ super(); this.i = i; } @Override public void run(){ System.out.println(i); } public static void main(String[] args) { MyThread thread1 = new MyThread(1); MyThread thread2 = new MyThread(2); MyThread thread3 = new MyThread(3); MyThread thread4 = new MyThread(4); MyThread thread5 = new MyThread(5); MyThread thread6 = new MyThread(6); MyThread thread7 = new MyThread(7); MyThread thread8 = new MyThread(8); MyThread thread9 = new MyThread(9); MyThread thread10 = new MyThread(10); thread1.start(); thread2.start(); thread3.start(); thread4.start(); thread5.start(); thread6.start(); thread7.start(); thread8.start(); thread9.start(); thread10.start(); } }
運行結果以下,執行順序與調用start()方法的順序不一致:線程