Timeout wykonywania funkcji

0

Witam.
Mam problem i nie mogę znaleźć rozwiązania.
Otóż dostaje requesta do kontrolera który powoduje rozpoczęcie wykonywania pewnej funkcji, a w niej wykonuje zapytanie do bazy i w zależności od tego jak długo się kręci zapytanie musze zwrócić dane z bazy lub informację o timeoucie.
Czy jest możliwość wykonania tego zapytania i zwrócenia wyników tak by zapytanie do bazy nie było wysyłane z oddzielnego wątku?
Rozwiązanie dostarczone przez ExecutorService odpada, gdyż jest tworzony nowy wątek z którego nie mogę dostać się do bazy.
Wpadłem na pomysł by przed wysłaniem zapytania odpalić wątek z odmierzaniem czasu ale po jego upływie i tak nie zwrócę timeouta, a zwrócenie czegokolwiek może odbyć się dopiero po wykonaniu zapytania na bazie. Myślałem też o tworzeniu Labelek i w wątku odmierzającym czas postawić break label; ale blok labelki jest na zewnątrz watku, wiec label jest dla tego watka niewidoczny.
Myślałem by rzucić wyjątek z wątku odmierzania czasu i w parencie go przechwycić ale jak wiecie to też jest nie możliwe.
Czy jest możliwość zastopowania wykonywania funkcji gdy wykonuje się zbyt długo i zwrócenia z niej wartości?Jakieś pomysły?

0

A co powstrzymuje Cie od wykonania zapytania w osobnym watku?

0

Hibernate.
Czy można to zrobić w sposób jaki przedstawiłem?

0

Nadal nie rozumiem dlaczego nie mozesz wykonac zapytania w osobnym watku. Mozesz przyblizyc swoje nieudane proby z ExecutorService?

0

jezeli bede wykonywac zadanie przy uzyciu ExecutorService to z automatu zadanie wykjonuje się w nowym watku.
To z kolei tworzy wyjatki i brak odczytu z bazy.
Rozumiem ze nie ma takiego rozwiazania poza wykonaniem w nowym watku, ktore mi nie pasuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1