Уведомить поток Java из другого класса - PullRequest
0 голосов
/ 23 октября 2018

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

Проблема: я не могу найти созданные потоки из второго класса, getThreadByName ()всегда возвращать ноль, Любая идея?*

1 Ответ

0 голосов
/ 23 октября 2018

Есть несколько проблем с вашим кодом:

1) Он нарушает Соглашения Java Code : имя класса должно начинаться с заглавной буквы

2) wait ()метод должен вызываться потоком, которому принадлежит монитор объекта, поэтому вы должны использовать что-то вроде:

 synchronized (this) {   
             wait(); 
     }

3) метод notify () должен вызываться потоком, который владеет монитором объекта, и тем же объектомкак wait (), в вашем случае экземпляр OrderSessionsManager.

4) Поскольку вы не указываете ThreadGroup, поток получает свою ThreadGroup от своего родителя.Следующий код работает должным образом:

public class Main {
    public static void main(String[] args) {
        class1 c1 = new class1();
        try {
            c1.createThread("t1");
        } catch (Exception e) {
            e.printStackTrace();
        }
         Thread thread = Utils.getThreadByName("t1");
         System.out.println("Thread name " + thread.getName());
    }
}

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

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