V J2EE se namísto toho využije aplikační server a pomocí message se pošle
pokyn k vykonání nějaké asynchronní operace.
Podívejte se třeba na
http://www.java2s.com/Code/Java/EJB3/EJBTutorialfromJBossdemoformessagedrivenbean.htm
Protože jste toto asi ještě nepoužil, ještě napovím, že zpráva může být
různých typů včetně java.lang.Object

Jirka Chaloupka

Dne 13. dubna 2012 14:33 Petr Franta <[email protected]> napsal(a):

> Chtěl jsem se zeptat na váš názor nebo zkušenost s prací ve vláknech J2EE
> aplikací?
> Četl jsem doporučení, že by se vlákna neměla v J2EE vytvářet resp., že
> jsou doporučené metody jak to bezpečně dělat (pomocí různých implementací
> timerů atd.).
>
> Řeším problém, kdy vlákno (request) potřebuje udělat tři dotazy do třech
> různých databází a ty sloučit do jednoho výsledku. Je velmi pomalé čekat na
> doběh jednotlivých dotazů, které jsou na sobě nezávislé.
> Navrhl jsem pro začátek něco takového viz. níže, ale nejsem si jist jestli
> tam není nějaká záludnost:
>
> /** definice pracovní třídy pro práci s DB (obsahuje vše potřebné k
> načtení dat) */
> public class DbWorker implements Callable<Result> {
>   ...
> }
>
> /** voláno z requestu */
> ExecutorService executor = Executors.newFixedThreadPool(MAX_THREADS);
> List<Future<Result>> res = new ArrayList<Future<Integer>>();
>
> for (DbTask task : tasks) {
>   // načtení dat
>   res.add(executor.submit(new DbWorker(task, ...)));
> }
>
> // čekej na dokončení vláken
>
> // Zpracování načtených dat
> for (Future<Integer> future : res) {
>   System.out.println(future.get());
> }
>
> Petr
>

Odpovedet emailem