为什么我的“Runnable”没有“start”方法?
为什么我必须在内部类中扩展 Thread 而不是实现 Runnable 以下代码有效:-
class Outer{
Inner innerObj;
Outer(){
innerObj = new Inner();
}
public void begin(){
innerObj.start();
}
class Inner extends Thread{
Inner(){
System.out.println("Thread initialized!");
}
public void run(){
System.out.println("Thread running!");
}
}
}
class Driver{
public static void main(String[] args){
Outer o1 = new Outer();
o1.begin();
}
}
但是使用 Runnable
会导致编译错误:-
class Outer{
Inner innerObj;
Outer(){
innerObj = new Inner();
}
public void begin(){
innerObj.start();
}
class Inner implements Runnable{
Inner(){
System.out.println("Thread initialized!");
}
public void run(){
System.out.println("Thread running!");
}
}
}
class Driver{
public static void main(String[] args){
Outer o1 = new Outer();
o1.begin();
}
}
Why is it that i must extend Thread
in an inner class instead of implementing Runnable
The following code works:-
class Outer{
Inner innerObj;
Outer(){
innerObj = new Inner();
}
public void begin(){
innerObj.start();
}
class Inner extends Thread{
Inner(){
System.out.println("Thread initialized!");
}
public void run(){
System.out.println("Thread running!");
}
}
}
class Driver{
public static void main(String[] args){
Outer o1 = new Outer();
o1.begin();
}
}
However using a Runnable
causes a compile error:-
class Outer{
Inner innerObj;
Outer(){
innerObj = new Inner();
}
public void begin(){
innerObj.start();
}
class Inner implements Runnable{
Inner(){
System.out.println("Thread initialized!");
}
public void run(){
System.out.println("Thread running!");
}
}
}
class Driver{
public static void main(String[] args){
Outer o1 = new Outer();
o1.begin();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是因为实现
Runnable
不会为类提供start
方法。您需要创建一个Thread
来运行Inner
。That's because implementing
Runnable
doesn't give a class thestart
method. You will need to create aThread
to run theInner
.Runnable 不提供 start() 方法。您实际上需要创建一个线程来运行内部类
Runnable doesn't provide a start() method . You actually need to create a Thread to run the Inner class