日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java面试题40 当编译并运行下面程序时会发生什么结果()

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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);

????????}

????}

}

A 編譯錯誤,指明run方法沒有定義 B 運行錯誤,指明run方法沒有定義 C 編譯通過并輸出0到9 D 編譯通過,但無輸出

?蒙蔽樹上蒙蔽果,蒙蔽樹下你和我

說一說我自己的理解。
這題可以用面向對象的思想即可解決
首先繼承Thread,然后調用run方法,bgroud并沒有重寫run方法,那么就是調用父類Thread的run方法。
然后查看父類代碼

@Overridepublic void run() {if (target != null) {target.run();}}

private Runnable target;
其中target是Runnable對象
明顯target并沒有顯示初始化。
所以不會有顯示。
一般target的初始化是這樣的,將runnable對象作為thread參數進行線程的創建

public Thread(Runnable target) {init(null, target, "Thread-" + nextThreadNum(), 0);}

再看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 当编译并运行下面程序时会发生什么结果()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。