我试图学习多线程是如何工作的。这是示例代码,我有: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