powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно использовать ScheduledExecutorService
9 сообщений из 9, страница 1 из 1
Как правильно использовать ScheduledExecutorService
    #39719898
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую! Подскажите, в какую сторону копать. При использовании ScheduledExecutorService, шедулер через какое-то время перестает работать, хотя процесс существует. Просто перестает выполнять то, что находится внутри Runnable.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
public static void main(String[] args)  {
        schedulerOne();
        schedulerTwo();
        schedulerThree();
    }

private static void schedulerOne() {
        ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-one").build();
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, namedThreadFactory);
        Runnable sender = () -> {

                SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);
                try {
                    sqlSession.selectOne("selectTest");
                } catch (Exception e) {
                } finally {
                    sqlSession.close();
                }

        };
        scheduler.scheduleAtFixedRate(sender, 60, 30, TimeUnit.SECONDS);
    }

private static void schedulerTwo() {
        ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-two").build();
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, namedThreadFactory);
        Runnable sender = () -> {

                SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);
                try {
                    sqlSession.selectOne("selectTest");
                } catch (Exception e) {
                } finally {
                    sqlSession.close();
                }

        };
        scheduler.scheduleAtFixedRate(sender, 3, 3, TimeUnit.SECONDS);
    }

private static void schedulerThree() {
        ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("thread-three").build();
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1, namedThreadFactory);
        Runnable sender = () -> {

                SqlSession sqlSession = SqlMapHelper.getSqlSessionFactory().openSession(true);
                try {
                    sqlSession.selectOne("selectTest");
                } catch (Exception e) {
                } finally {
                    sqlSession.close();
                }

        };
        scheduler.scheduleAtFixedRate(sender, 5, 5, TimeUnit.SECONDS);
    }
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720042
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более не актуально, проблема в самих Thread было.
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720858
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет опять!

Все-таки, почему-то периодически, выполнения ScheduledExecutorService просто прекращается, безо всяких ошибок в логах. Подскажите, может кто знает, бывает ли такое или же есть какие-то условия, когда ScheduledExecutorService прекращает работать?

Приложение крутится на Java 1.8.0.181 и использую сервер для WS на основе tooTallNate.WebSocket.
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720863
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qi_ip,

у тебя десктопное приложение и сервер на томкат?
ScheduledExecutorService на сервере или приложении?
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720873
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все серверное (только core).

Вот нашел ссылку, походу такое поведение существует

http://code.nomad-labs.com/2011/12/09/mother-fk-the-scheduledexecutorservice/
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720879
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понял - у вас пустой блок

Код: javascript
1.
2.
} catch (Exception e) {
                }



как вы хотите увидеть Exception ?
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720880
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это только пример, в оригинальном коде все логирование стоит
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720889
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как правильно использовать ScheduledExecutorService
    #39720904
qi_ip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Герой днятут показательные примеры:

https://medium.com/@aozturk/how-to-handle-uncaught-exceptions-in-java-abf819347906

https://stackoverflow.com/questions/37829369/scheduledexecutorservice-how-do-i-catch-its-exceptions

Спасибо большое, будем посмотреть )))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно использовать ScheduledExecutorService
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]