Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: Сети
Войти
Регистрация
Восстановить пароль
 
florgas
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 364
1

Запуск бесконечного цикла при работе с вебсокетами

15.07.2018, 00:08. Просмотров 132. Ответов 1
Метки нет (Все метки)

Приложение работает с вебсокетами.
Приходит сообщение, после которого на сервере надо запустить бесконечный цикл.
Написал этот цикл в новом потоке.
Все работает, можно работать с другими сервисами, или принимать ajax'ы. Но цикл блокирует @OnMessage вебсокетов, из которого запускался новый поток.
Подскажите как запустить этот цикл так, чтобы можно было продолжить работу с вебсокетами параллельно с выполнением цикла.

Java
1
2
3
4
5
6
@OnMessage
    public void onMessage(Session session, Message message) throws IOException, InterruptedException, EncodeException {
        if (Objects.equals(message.getSubject(), "start-game")) {
            GameInfinityLoop gameInfinityLoop = new GameInfinityLoop();
            gameInfinityLoop.run();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class GameInfinityLoop implements Runnable {
 
    private WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
    private GameService gameService = context.getBean(GameService.class);
 
    @Override
    public void run() {
        try {
            gameService.game();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (EncodeException e) {
            e.printStackTrace();
        }
    }
}
Добавлено через 1 час 39 минут
Проблема решена.
Решение:
Java
1
2
3
4
@OnMessage
    public void onMessage(Session session, Message message) throws IOException, InterruptedException, EncodeException {
        if (Objects.equals(message.getSubject(), "start-game")) {
            new GameInfinityLoop().start();
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class GameInfinityLoop extends Thread {
 
    private WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
    private GameService gameService = context.getBean(GameService.class);
 
    @Override
    public void run() {
        try {
            gameService.game();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (EncodeException e) {
            e.printStackTrace();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2018, 00:08
Ответы с готовыми решениями:

Запуск потоков из цикла
Добрый день. Пытаюсь реализовать много поточное движение неких объектов. В...

Вывод содержимого vector при наличии бесконечного цикла
День добрый! Возникла проблема с выводом содержимого vector-а. Вот код:...

Найти сумму ряда при использовании бесконечного цикла
Будьте добры помогите пожалуйста! Цикл c использованием конструкции Do While –...

Выход из бесконечного цикла в GraphABC при нажатии клавиши (любой)
Здравствуйте! У меня такая проблема: Дан цикл: uses GraphABC repeat ...

GameLogo Ошибка при попытке прерывания бесконечного цикла по клавише
пытаюсь прервать бесконечный цикл по клавише Esc код...

1
KEKCoGEN
Эксперт Java
2059 / 1930 / 501
Регистрация: 28.12.2010
Сообщений: 7,730
15.07.2018, 00:52 2
Цитата Сообщение от florgas Посмотреть сообщение
Но цикл блокирует @OnMessage вебсокетов, из которого запускался новый поток.
новый поток не запускается методом run()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2018, 00:52

Сложное условие завершения цикла при работе с матрицами.
Методика выполнения работы. Составить программу, предусматривая завершение...

Сложное условие завершения цикла при работе с матрицами
Помогите пожалуйста написать программу на паскале Дана матрица А с 2...

Ошибка обращения к памяти при работе цикла (access violation)
Есть нехитрая процедура, которая рассчитываем коэффициенты. procedure...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru