Thread

概念

1、如何用Thread創建多線程?

class MyThreadextends Thread{

    private Stringname;

    public MyThread(String name){

        this.name = name;

    }

    publicvoid run(){//覆寫Thread中的run()方法

        for(int i=0;i<10;i++)

            System.out.println("My Thread -->" +name);

    }

}

 

publicclass Test{

    publicstaticvoid main(String[] args) {

        MyThread t1 = new MyThread("線程1");

        MyThread t2 = new MyThread("線程2");

        t1.start();

        t2.start();        

    }

}

 

運行結果

MyThread -->線程1

MyThread -->線程2

MyThread -->線程1

MyThread -->線程2

MyThread -->線程2

MyThread -->線程2

MyThread -->線程1

……



面試題

1、輸出?
publicclassExample extendsThread{
     @Override
     publicvoidrun(){
        try{
             Thread.sleep(1000);
             }catch(InterruptedException e){
             e.printStackTrace();
             }
             System.out.print("run");
     }
     publicstaticvoid main(String[] args){
             Example example=newExample();
             example.run();
             System.out.print("main");
     }
}

答:
用Thread新建一個線程的方法:
(1)新建類,繼承Thread,改寫run();
(2)在main中新建這個類的對象,並調用.start()方法,它會調用run()。
該題的陷阱是新建了繼承Thread的類,但是沒有調用.start()方法,這個就是新建了一個對象,
並調用它的方法,不涉及多線程。
輸出:runmain

2、判斷:sleep()方法導致程序暫停執行指定的時間,讓出CPU給其他線程。
答:
錯。是線程暫停,執行指定的時間。概念不清晰就會被搞暈。
補充:sleep()方法屬於Thread類,wait()方法屬於Object類。



記憶

當一個優先級高的線程進入就緒狀態,它只是有較高的概率搶到CPU的執行權。

當線程拋出一個例外時,該線程就終止了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章