java面试题40 当编译并运行下面程序时会发生什么结果()
java面試題40 當編譯并運行下面程序時會發生什么結果()
| 1 2 3 4 5 6 7 8 9 10 11 | public class Bground extends Thread{ ????public static void main(String argv[]){ ??? ????Bground b = new Bground(); ??????? b.run(); ????} ????public void start(){ ??? ????for(int i=0;i<10;i++){ ??????????? System.out.println("Value of i = "+i); ????????} ????} } |
?蒙蔽樹上蒙蔽果,蒙蔽樹下你和我
說一說我自己的理解。
這題可以用面向對象的思想即可解決
首先繼承Thread,然后調用run方法,bgroud并沒有重寫run方法,那么就是調用父類Thread的run方法。
然后查看父類代碼
private Runnable target;
其中target是Runnable對象
明顯target并沒有顯示初始化。
所以不會有顯示。
一般target的初始化是這樣的,將runnable對象作為thread參數進行線程的創建
再看init()
private void init(ThreadGroup g, Runnable target,String name,long stackSize) {init(g, target, name, stackSize, null);}在init(g, target, name, stackSize, null),可以找到this.target = target;
此時進行了初始化。
最后說一說,Thread 的執行過程,Theard的啟動方法是start().線程類調用start();然后執行start0()本地方法,然后就沒辦法再追溯下去了。
start我聽過別人說,是一個準備工作(比如你要吃蘋果,不得先洗一下,真正吃時間是洗完后),并沒有獲得cpu,調用run()才是獲得了cpu。
答案選D
我是歌謠,有什么不合理之處歡迎指出。喜歡敲代碼,無聊刷刷題。
閱讀目錄(置頂)(長期更新計算機領域知識)
閱讀目錄(置頂)(長期更新計算機領域知識)
閱讀目錄(置頂)(長期科技領域知識)
歌謠帶你看java面試題
總結
以上是生活随笔為你收集整理的java面试题40 当编译并运行下面程序时会发生什么结果()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis学习(27):获取自增id
- 下一篇: 高质量解读《高性能mysql》——第1章