У меня есть некоторый код, который демонстрирует использование потоков с помощью интерфейса 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();
}
}