Я пытаюсь сделать поток сна из метода run() класса, который я использую в потоке, который я создаю, тем самым имея поток спать, когда его вызвали, и я получаю и ошибка от затмения. Цель состоит в том, чтобы просто несколько раз протестировать код и увидеть, что потоки, выдаваемые в разное время, когда я знаю, что выбрать нитки для запуска, не являются решающей вещью.JAVA Пытается запустить метод сна внутри объекта runnable, помещенного в новый поток
мой код выглядит следующим образом
package multithreading;
public class Mainclass {
public static void main(String[] args) {
run work= new run();
Thread thread = new Thread(work);
thread.start();
System.out.println("main thread is running");
}// end of main
}// end of class mainclass
здесь класс бежать, что я создания экземпляра/объекта в магистральный вверх над
public class Run implements Runnable{// this is the beggining of the class
public void run(){
try {
thread.sleep(200);
}catch (InterruptedException ex) {
}
System.out.println("the second thread is running");
}// end of run method of the class run
}// end of class run
любая помощь была бы значительно appreaciated
Вы когда-нибудь слышали о [именования] (http://www.oracle.com/technetwork/java/codeconv-138413.html)? Названия классов должны начинаться с заглавных букв, например, в вашем случае 'MainClass'. Таким образом, легче понять, имеем ли мы дело с классом/конструктором или с переменной/методом. – Pshemo
* «и я получаю и ошибка от затмения» *. Ну, возможно, вы должны поделиться этим сообщением об ошибке с нами ... –
Переменная 'thread' в вашем методе' main() 'является локальной переменной, а не в области метода' run() 'в' Runnable' реализация. Кроме того, 'Thread.sleep()' является статическим методом; он всегда спит в текущем потоке (поток, который вызывает 'sleep()'), даже если вы вызываете его через экземпляр (который работает, но плохой стиль ... как ваше пренебрежение к соглашениям об именах Java). – erickson