要分情况:
第一种情况:通过继承Thread类来实现线程。这种方法,没有run(),编译、运行都不会报错。
public class TestThread
{
public static void main(String[] args)
{
AThread t = new AThread();
t.start();
System.out.println("没有编译运行异常");// 输出:没有编译运行异常
}
}
class AThread extends Thread //Thread类已经实现了空的run()方法。
{
System.out.println("没有编译运行异常");// 输出:没有编译运行异常
}
}
class AThread extends Thread //Thread类已经实现了空的run()方法。
{
//代码
}
}
第二种情况:通过Runnable接口实现线程,没有run()方法,编译会出现异常。原因是通过接口实现,该类必须重写Runnable接口中的抽象方法run()方法。
public class TestRunnable
{
public static void main(String[] args)
{
AThread t = new AThread();
Thread t1= new Thread(t);
t1.start();
System.out.println("编译运行没有错");
}
}
class AThread implements Runnable
{
public void run() //必须有此方法否则编译报错。它是Runnable接口中的抽象方法。
{
System.out.println(”run()方法”);
}
}
本文探讨了两种创建线程的方式:继承Thread类和实现Runnable接口。当继承Thread类时,即使没有自定义run()方法,程序也能正常编译和运行。然而,如果实现Runnable接口,不重写run()方法会导致编译错误,因为Runnable接口要求实现run()抽象方法。

被折叠的 条评论
为什么被折叠?



