Próbuję uzyskać uchwyt na temat wykonywania wątków w aplikacji Java, która używa Spring do zarządzania transakcjami. Znalazłem sekcji TaskExecutor w Spring documentation, a ThreadPoolTaskExecutor wygląda tak, jakby pasował do moich potrzeb;Jakieś dobre nawlekanie za pomocą przykładów TaskExecutor?
ThreadPoolTaskExecutor
Implementacja ta może być używana tylko w środowisku Java 5, ale jest również najczęściej używany jeden w tym środowisku. Ujawnia właściwości komponentu bean do konfigurowania obiektu java.util.concurrent.ThreadPoolExecutor i opakowuje go w TaskExecutor. Jeśli potrzebujesz czegoś zaawansowanego, takiego jak ScheduledThreadPoolExecutor, zalecane jest użycie ConcurrentTaskExecutor.
Jednak nie mam pojęcia, jak go użyć. Szukałem dobrych przykładów przez jakiś czas, bez powodzenia. Jeśli ktokolwiek może mi pomóc, będę wdzięczny.
Myślę, że mój problem jest myślenie jest bardziej skomplikowane to jest. Widziałem http://docs.huihoo.com/javadoc/spring/2.0/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.html#createQueue)) i założyłem, że ThreadPoolTaskExecutor ma wbudowany mechanizm kolejkowania. –
Może się nie mylę, do czego służy funkcja queueCapacity? Wciąż czuję, że tu coś pomijam. –
Jeśli pojemność kolejki jest większa niż 0, tworzy kolejkę, aby zadania uruchamiane przez określonego TaskExecutora mogły czekać, aż wątek będzie dostępny z puli. Pojemność wskazuje, ile spacji znajduje się w kolejce. Jeśli kolejka się zapełni, executor zablokuje (tzn. Metoda wykonania nie powróci, dopóki nie otworzy się spacja). Oto dokument w kolejce: http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/LinkedBlockingQueue.html –