我有一些代码通过使用 Runnable 接口来演示线程的使用。我从某处网站的代码开始,并根据自己的喜好对其进行了修改。它有效,但我不明白其中的一部分。我试图将代码剥离到我所要求的本质,但我可能已经拿出了太多东西。我在 NetBeans 中的代码有效,所以这是有效的代码,除非我把错误的东西弄乱了。但是让我问我的问题,看看是否可以回答:我不明白的部分是这部分:
public String toString()
{
return "Thread " + Thread.currentThread().getName() + ": " + countDown;
}
在最长的时间里,这在我看来就像一个成员变量,其名称在运行时动态设置为等于当前线程的名称。但是我也在不止一个地方读到过你不能在 Java 中动态命名变量,所以我想这不是我在看的。然后,我意识到 NetBeans 想让我把 @Override 放在这段代码之前,因为有些东西被覆盖了。但我不明白究竟是什么被覆盖。我是否覆盖了某个父类的构造函数?如果有,是什么班?
无论如何,这是代码:
package countdown;
public class Counter implements Runnable
{
private int countDown = 5;
public String toString()
{
return "Thread " + Thread.currentThread().getName() + ": " + countDown;
}
public void run()
{
while(true) {
System.out.println(this);
if(--countDown == 0)
{
return;
}
}
}
}
package countdown;
public class Main
{
public static void main(String[] args)
{
for(int i = 1; i <= 5; i++)
new Thread(new Counter(), "" + i).start();
}
}