1. 程式人生 > >Java線程總結(一)

Java線程總結(一)

extend pub ren xtend private rri for print 分享

首先,先貼上一個簡單的線程實例:

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(); } } }

運行結果如下:

技術分享圖片

由運行結果可以看出,程序中有兩個線程,一個是主線程,另一個是我手動創建的線程,主線程都是jvm創建的。

線程執行start()方法不代表線程的啟動順序,如下例:

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()方法的順序不一致:

技術分享圖片

Java線程總結(一)