我試圖學習多線程是如何工作的。這是示例代碼,我有:Java - 實現Runnable行爲與擴展線程相比
public class Processor extends Thread {
private boolean running = true;
public void run() {
while (running) {
System.out.println("Hello there!");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void shutDown() {
running = false;
}
}
public class ProcessorDemo {
public static void main(String[] args) {
Processor proc1 = new Processor();
proc1.start();
System.out.println("Press return to stop");
Scanner sc = new Scanner(System.in);
sc.nextLine();
proc1.shutDown();
}
}
出現的問題,當我實現Runnable,而不是擴展Thread - 代碼差異
public class Processor implements Runnable
// in ProcessorDemo
Thread proc1 = new Thread(new Processor());
會發生什麼,代碼給出一個錯誤,說: 「方法shutDown()是未定義的類型線程」
爲什麼會發生這種情況,創建線程的兩種方式都應該給出相同的結果?
謝謝大家:)
這是一個高度環境/語言特定的問題。請在您的問題中包含這些信息。最好在標籤中。 – Aron
_「創建線程的兩種方式應該給出相同的結果」_ - 這是不正確的。你爲什麼認爲這是真的? –
你的意思是說你的第二個版本根本不編譯?這不完全是「行爲不同」,因爲你根本不會採取行動,因爲你永遠不會運行它。 – pvg