我正在学习Java中的线程,我遇到过这两个:
Class Runner实现runnable并传递给Thread对象
中的构造函数 Runner runner = new Runner();
Thread thread1 = new Thread(runner);
Thread thread1 = new Thread(new Runner());
我从未遇到过第二种选择。如果有人可以帮助初学者Java程序员并告诉我第二个变体的用途是什么,以及在构造函数中创建类的实例时实际调用它会是什么呢?
谢谢。
答案 0 :(得分:5)
除了第一个之后没有区别,你有一个引用runner
的变量Runner
,而在第二个之后,你没有。但是它们都创建了一个新的Runner
对象,并使用该新对象构造了一个新的Thread
。
答案 1 :(得分:2)
这只是将任何表达式用作对象的能力,无论是变量还是构造函数。
作为一个类比,第一个就是“种一个苹果然后放在桌子上。然后,从桌子上的那个苹果做一个馅饼”
第二种类似于“种植一个苹果并从中制作馅饼”。它只是避免使用中间变量来保存苹果(在代码中,可运行)
如果你需要对苹果做一些事情而不是传递它,你需要(在大多数情况下)存储到一个中间变量。这里的比喻是“把苹果长出来,把它放在桌子上。剥掉苹果。用苹果做一个新馅饼”
答案 2 :(得分:2)