Java線程總結(一)

首先,先貼上一個簡單的線程實例: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()方法的順序不一致:線程

相關文章
相關標籤/搜索