Есть несколько проблем с вашим кодом:
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 находится в той же группе, что и основной поток.