2015-05-31 2 views
2

Почему у меня есть доступ к методу getName()? Мой класс не расширяет класс Thread только реализует интерфейс Runnable.getName() из класса Thread

public class MyThread implements Runnable { 
    public void run() { 
     System.out.println("MyThread is running"); 
    } 

    public static void main(String[] args){ 
     MyThread thread1 = new MyThread(); 
     Thread thr = new Thread(thread1, "thread"); 
     thr.start(); 
     System.out.println(thr.currentThread().getName()); 
     System.out.println(thr.getName());//Why do I have access to this method? 
    } 
} 

ответ

6

Вы не вызывая GetName() на экземпляре класса MyThread, вы вызываете его на экземпляр класса Thread. Вы должны переименовать свой класс в MyRunnable, потому что MyThread кажется, что ваш класс - это своего рода класс Thread, а это не так.

0

Каждое действие, которое вы выполняете, является нитью. В случае, если вы выполняете какое-либо действие, в основном методе при запуске программы это происходит в основном потоке.

Метод currentThread является статическим и предоставляет поток, который в данный момент выполняет эту строку, и когда вы выполняете, getName() находится в этом объекте Thread.

Смежные вопросы