JDD2014: JAVA.util.concurrent czyli wielow…tkowo›‡ z r³¼nych...

download JDD2014: JAVA.util.concurrent czyli wielow…tkowo›‡ z r³¼nych perspektyw, tych mniejszych i tych enterprise - Tomasz abuz

of 62

  • date post

    01-Jul-2015
  • Category

    Software

  • view

    211
  • download

    0

Embed Size (px)

description

Wielowątkowość to temat przewijający się często w aplikacjach. Czasem tworzona ręcznie, czasem przykryta przez frameworki. Omówione zostaną niektóre elementy pakietu java.util.concurrent, które można wykorzystać zarówno do implementacji wielowątkowości w swoich aplikacjach jak i bezpiecznego wykorzystywania jej w gotowych projektach opartych na gotowych frameworkach. Przyglądniemy się również sposobom wykorzystania wielowątkowości w JavaEE np w komponentach EJB.

Transcript of JDD2014: JAVA.util.concurrent czyli wielow…tkowo›‡ z r³¼nych...

  • 1. java.util.concurrencyWielowtkowo z punktu widzenia Java EE, Spring, Akka

2. Ericpol Sp. z o.o. Wasno prywatna Zaoona w 1991 Obroty 2013: 66,5 MEUR Ponad 2000 pracownikw w 4 krajach Siedziba: d, Polska Biura: Krakw, Warszawaericpol.comEricpolrrrr-mm-dd 2 Oddziay: Linkping, Szwecja Lww, Ukraina Brze, Biaoru Certyfikat ISO 9001 & 14001 3. ericpol.comEricpol w liczbachEricpolwliczbachPonad75krajw, w ktrychrealizowalimyprojektyPonad750zrealizowanychprojektwPonad2 mldludzi korzystajcychze wsptworzonegoprzez nasoprogramowaniaPonad1mlnsamochodw z naszymoprogramowaniemrrrr-mm-dd 3 4. ericpol.comObszary biznesoweBankowoi FinanseAplikacje dlabiznesu M2MAplikacjemedycznerrrr-mm-dd 4Zamwieniapubliczne Integracja Rozwizaniadedykowane E-usugi Obiegdokumentw Wynajem kadry Utrzymaniei rozwjoprogramowania Rozwizaniadedykowane Wdroeniaoprogramowania Szkolenia Wdroenia Rozwj Kastomizacja Dedykowanerozwizania IT Utrzymanie Szkolenia Konsulting Konsulting Migracja Wynajem kadry Integracja Rozwjoprogramowania Utrzymanie Rozwizaniawasne: drEryk,erLab, aplikacjemobilne Kastomizacja SzkoleniaTelekomunikacja Wynajem kadry Konsulting Kastomizacja Rozwizaniadedykowane Szkolenia Integracja Rozwj 5. ericpol.comPokrtce omwimyTHREADJSEJEERunnableFutureExecutorsThreadPoolJEE 6JEE 7Components Pool@AsynchronousManagedExecutorsManagedThreadPoolsConnector Thread PoolAsynchronous 6. ericpol.comKady w yciu czasem chce zrobi co duego 7. ericpol.comNo to budujmy 8. ericpol.comA daoby si szybciej? 9. ericpol.comNajlepiej jakby si dao 10. ericpol.comAle jak to mwi9 kobiet nie urodziw jeden miesic 11. ericpol.comPotrzebna koordynacja prac 12. ericpol.comInaczej efekt moe by inny ni oczekiwany? 13. ericpol.comAplikacja 14. ericpol.comPrzetwarzanie daPula wtkwodbierajcych dania 15. ericpol.comCzasami nasze niektre zadanias cisze ni wywietlenie buki na ekranie. 16. ericpol.com i potrafi przytka systemPula pocze 17. ericpol.com lub wyre ca pamiPami 18. ericpol.comW oczekiwaniu na wynik 19. ericpol.comCo mona poradzidooy sprztu?dooy pamici? 20. ericpol.comOgraniczmy aroczno aplikacji 21. ericpol.comrodowisko JSE- w zasadzie rczne zarzdzanie wtkami JEE- wtki zarzdzane przez serwer- nie zalecane rczne uruchamianie wtkw- nowe elementy w JEE 7 22. ericpol.comDla przypomnienia@FunctionalInterfacepublic interface Runnable {public abstract void run();}public class MyRunnable implements Runnable {@Overridepublic void run() {}} 23. public class MyThread extends Thread{public MyThread() {super(new MyRunnable());}}ericpol.com 24. ericpol.comDla przypomnienia c.d.Thread thread = new Thread(new MyRunnable());thread.start();Thread thread = new MyThread();thread.start(); 25. ericpol.comLock Lock ReentrantLock ReentrantReadWriteLock 26. ericpol.comThreadPoolpula wtkwPotraktujmy pul wtkw jak pul pocze.Spowodujemy i okrelone zadanie bdzieprzeprowadzane tylko przez okrelon ilowtkw.Dziki temu zapanujemy np. nad zuyciempamici i zablokujemy nadmiernpazerno aplikacji (jeli takowa istnieje). 27. ericpol.comExecutorServiceExecutorService executorService =Executors.newFixedThreadPool(5); 28. ericpol.comExecutorServiceExecutorService executorService =Executors.newFixedThreadPool(10);ExecutorService executorService =Executors.newCachedThreadPool(new ThreadFactory() {@Overridepublic Thread newThread(Runnable r) {return .. ;}}); 29. ericpol.comCallable i Futurepublic interface Callable {V call() throws Exception;}public interface Future {boolean cancel(boolean mayInterruptIfRunning);boolean isCancelled();boolean isDone();V get() throws InterruptedException,ExecutionException;V get(long timeout, TimeUnit unit)throws InterruptedException, ExecutionException,TimeoutException;} 30. ericpol.comWywoanie zadaniaExecutorService executorService =Executors.newFixedThreadPool(10);Future future =executorService.submit(new Callable() {@Overridepublic String call() throws Exception {executorService.invoke();return "TEST";}}); 31. ericpol.comZbieranie wynikwExecutorService executorService =Executors.newFixedThreadPool(5);CompletionService completion = newExecutorCompletionService(executorService);for(;;){completion.take();} 32. ericpol.comForkJoinPool Mechanizm wprowadzony w Java 7 java.util.concurrent.ForkJoinPool java.util.concurrent.ForkJoinTask java.util.concurrent.RecursiveTask java.util.concurrent.RecursiveAction 33. ericpol.comForkJoinPoolForkJoinPool pool = new ForkJoinPool();ForkJoinPool pool = new ForkJoinPool(Runtime.getRuntime().availableProcessors()); 34. ericpol.comForkJoinTaskForkJoinPool pool = new ForkJoinPool();pool.execute(new ForkJoinTask{});pool.execute(ForkJoinTask.adapt(Callable){}); 35. ericpol.comRecursiveTaskclass Incrementor extends RecursiveTask {int theNumber;Incrementor(int x) {theNumber = x;}public Integer compute() {return theNumber + 1;}} 36. ericpol.comRecursiveTask (2)class Sum extends RecursiveTask {Sum(int[] arr, int lo, int hi) {array = arr;low = lo;high = hi;}protected Long compute() {}} 37. ericpol.comFork & Joinprotected Long compute() {if(high - low