Java中的线程可以通过两种方式定义:
创建线程的方法是什么?
Thread t = new Thread() {
@Override
public void run() {
try {
sleep(10000);
}
catch (InterruptedException e) {
System.err.println(e);
}
finally {
finish();
}
}
};
t.start();
这是一个匿名课吗?这段代码工作正常,我测试了这段代码。但我不明白这里发生了什么。
答案 0 :(得分:1)
是的,您的代码会创建Anonymous class。
答案 1 :(得分:0)
这是匿名课吗?
是的,这是匿名的内联类实现。当您想使用内联类实现在本地创建类的线程对象时,可以使用此方法。
答案 2 :(得分:0)
这是匿名类吗?是匿名类
阅读本文以了解anonymous class 和好的例子here
答案 3 :(得分:0)
您的代码在某种意义上等同于拥有一个单独的类,如此定义。
public class SleepyThread extends Thread {
@Override
public void run() {
try {
sleep(10000);
}
catch (InterruptedException e) {
System.err.println(e);
}
finally {
finish();
}
}
}
然后有这样的代码。
Thread t = new SleepyThread();
t.start();
但是因为你只需要在一个地方使用这个类,所以没有必要给它一个名字,或者给它自己的源文件。您可以按照完成它的方式简单地内联类定义。
编译器仍然会为它创建一个类文件,其名称类似于MyClass$1.class
,其中MyClass
是您正在使用它的类。它只是“匿名”,因为你没有给它起名字。它在各方面都是一个完全成熟的课程。
答案 4 :(得分:0)
这就是我们所谓的匿名课程,你是对的: -
Java中的线程可以通过两种方式定义:
实际上你在内部创建了一个匿名类,它是一个扩展Thread类的子类。 所以这里你的线程由第二个选项定义..!