Мой код не распечатывается, но работает

#java

#java

Вопрос:

 public class MyThread{

    public MyThread(int m) {
        super();
    }

    public void run() {
        for (int x = 0; x < 201; x  ) { 
            System.out.println("Thread Running"   x );       
        } 
    }

    public static void main(String[] args) {
        MyThread mt = new MyThread(200);
    }
}
  

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

Также дайте мне знать, если я задаю вопрос неправильного типа, я попытался посмотреть «Как задавать вопросы», чтобы лучше задавать вопросы.

Комментарии:

1. Вы должны запустить () поток. Вам также необходимо либо реализовать Runnable, либо расширить поток. docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

2. ну, я сделал mt.start(); но он продолжал выдавать мне ошибки, поэтому я удалил его Спасибо за помощь!

3. Взгляните на руководства по Java: параллелизм для четкого объяснения того, как использовать потоки.

Ответ №1:

У вас есть два варианта:

  1. Расширить Thread .

     public class MyThread extends Thread{
      

    Затем вызовите start() in main .

     mt.start();
      
  2. Реализовать Runnable .

     public class MyThread implements Runnable{
      

    Затем начните новую Thread передачу вашего объекта и вызовите start() .

     Thread t = new Thread(mt);
    t.start();
      

Комментарии:

1. Я лично предпочитаю второй вариант, потому что он не привязывает класс к подклассу Thread .

2. Предполагалось, что я должен был выполнить оба для домашней работы, мой учитель сказал, что лучше всего использовать Runnable, но он хотел, чтобы мы изучили оба. Спасибо за помощь! Вы получили лучший ответ! C:

3. @Barranka Я также предпочитаю второй вариант по причине, которую вы уже указали.

Ответ №2:

Похоже, вам не хватает implements Runnable для MyThread. И тогда вам понадобится start() ваш mt поток.

Комментарии:

1. Глупый я! Проблема решена!