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 >
