【发布时间】:2021-06-10 18:20:09
【问题描述】:
我一直在检查一些关于 Java 线程的技术资料,当我使用匿名类定义线程时(在构造函数定义中正确使用括号),我对一个特定问题有点困惑。 常规声明是这样的:
Thread myRunnableThread3 = new Thread(new MyRunnable(){
@Override
public void run() {
System.out.println("myRunnableThread3!");
}
});
myRunnableThread3.start();
出于实验目的,我尝试了这个:
Thread myRunnableThread3 = new Thread(new MyRunnable()){
@Override
public void run() {
System.out.println("myRunnableThread3!");
}
};
myRunnableThread3.start();
如您所见,两者看起来非常相似,输出控制台也相同。 那么,我错过了什么吗?也许还有一点我还没有意识到的功能差异。顺便说一句,我使用的是 Java Corretto 11。 两者看起来都不错,也许我应该选择第一个选项? 感谢您的 cmets 和帮助。
【问题讨论】:
-
它们是不同的,因为它们创建了一个由不同事物组成的匿名类:
MyRunnable和Thread。如果你问我,两者都不行。只需Thread myRunnableThread3 = new Thread(() -> System.out.println("myRunnableThread3!"))就简单多了 -
“什么是最好的方法”问题通常是基于意见的,因此,off-topic。
标签: java constructor inner-classes java-threads anonymous-class