Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно использовать ScheduledExecutorService / 9 сообщений из 9, страница 1 из 1
19.10.2018, 12:48
    #39719898
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно использовать ScheduledExecutorService
Приветствую! Подскажите, в какую сторону копать. При использовании 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
19.10.2018, 16:09
    #39720042
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно использовать ScheduledExecutorService
Более не актуально, проблема в самих Thread было.
...
Рейтинг: 0 / 0
22.10.2018, 13:22
    #39720858
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно использовать ScheduledExecutorService
Привет опять!

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

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

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

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

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

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



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

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


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