【发布时间】:2016-11-09 07:49:55
【问题描述】:
我正在尝试了解多线程的工作原理。这是我的示例代码:
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() 未定义”
为什么会发生这种情况,两种创建线程的方式都应该给出相同的结果?
谢谢大家:)
【问题讨论】:
-
这是一个高度特定于环境/语言的问题。请在您的问题中包含该信息。最好在标签中。
-
“创建线程的两种方式应该给出相同的结果”——这是不正确的。为什么你认为这是真的?
-
您的意思是说您的第二个版本根本无法编译吗?这并不完全是“行为不同”,因为你根本没有运行它。
标签: java multithreading runnable