Вопрос по поводу ошибки при обработке java с многопоточностью? - PullRequest
0 голосов
/ 11 июля 2020

Пожалуйста, помогите мне разобраться, что, когда неправильно в этой кодировке.

import java.lang.Thread;

class MyThread1 extends Thread
{ public void run()
{    for(int x=1;x<=15;x++)
  {  if(x==10)
   { stop();
    }
System.out.println(x);
}
}
}
class MyMain
{ public static void main(String args[])
{ MyThread1 first_thread=new MyThread1();
first_thread.start();
}
}

ошибка: Примечание: MyClass. java использует или переопределяет устаревший API. Примечание. Для подробностей перекомпилируйте с -Xlint: устаревание.

Ответы [ 2 ]

1 голос
/ 17 июля 2020

теперь вы не можете использовать методы suspend (), resume () или stop () для управления потоком.

Почему suspend (), resume () и stop () методы устарели?

Вот почему. Метод suspend () класса Thread был объявлен устаревшим через Java 2 несколько лет go. Это было сделано потому, что suspend () иногда может вызывать серьезные сбои системы. Предположим, что поток получил блокировки критических структур данных. Если этот поток приостановлен в этот момент, эти блокировки не снимаются. Другие потоки, которые могут ожидать эти ресурсы, могут оказаться в тупике.

Метод resume () также устарел. Он не вызывает проблем, но не может использоваться без метода suspend () в качестве его аналога.

Метод stop () класса Thread также устарел Java 2. Это было сделано, потому что этот метод может иногда вызывать серьезные системные сбои.

0 голосов
/ 11 июля 2020

Проблема в том, что вам не следует звонить на Thread.stop(). Это устарело и опасно.

Прочтите Thread.stop () - не рекомендуется , чтобы узнать, почему stop() устарел. Или javado c.

Если вы хотите, чтобы поток завершал себя, он может просто вернуться из метода run():

public void run() { 
    for (int x = 1; x <= 15; x++) {  
        if (x == 10) {
            return;
        }
    }
}

или выдать непроверенное исключение:

public void run() { 
    for (int x = 1; x <= 15; x++) {  
        if (x == 10) {
            throw new RuntimeException("It is 10am and your pants are on fire!");
        }
    }
}

Очевидно, вам следует выбрать более подходящее исключение и сообщение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...