簡體   English   中英

JAVA-通過擴展線程類進行多線程-關於創建對象

[英]JAVA - Multithreading by Extending Thread Class - About Creating Objects

public class game extends Thread{
    public void run() {
        System.out.println("Sub-class must override the void run() method of Thread class!");
    }
    public static void main(String args[]) {
        Thread t = new Thread();
        t.start();
    }
}

對於上面的這些代碼行,控制台中什么也沒有。 但是對於下面的這些代碼:

public class game extends Thread{
    public void run() {
        System.out.println("Sub-class must override the void run() method of Thread class!");
    }
    public static void main(String args[]) {
        game g = new game();
        g.start();
    }
}

我得到“子類必須重寫Thread類的void run()方法!” 顯示在控制台中。

您能幫我嗎,為什么我需要創建一個子類的對象而不是Thread類的對象? 有什么不同? 對不起,我是一個新手。

這是因為在第一個代碼中,該對象是沒有任務要運行的默認線程。 您本可以給線程對象執行這樣的任務,

public class game implements Runnable{
    public void run() {
        System.out.println("Sub-class must override the void run() method of Thread class!");
    }
    public static void main(String args[]) {
        Thread t = new Thread(new game());
        t.start();
    }
}

在第二種情況下,您為線程(子類游戲)提供了默認任務以在其run方法中打印。 在此處查看有關線程的更多信息

如果創建父類的實例,則編譯器將不知道其子類。 這就是為什么您需要實例化父級操作的子類的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM