Simultaneitatea este de a lucra cu cod multi-thread.
De obicei, prin acest lucru ne referim:
Managementul (crearea / start / stop) fire Java mașină virtuală (care "fir", fire). Cheia în fiecare astfel de flux poate fi realizată în paralel cu codul din celelalte fluxuri. Astfel, unele sarcini pot fi efectuate simultan, așa cum au fost. Aici este necesar să se ocupe de concepte, cum ar fi firele, piscine fire, Futura.
- java.lang.Thread
- java.lang.Runnable
- java.util.concurrent.Callable
- java.util.concurrent.Executor
- java.util.concurrent.Executors
- java.util.concurrent.ThreadFactory
Controlul debitului unui program (sincronizare fir). Continuarea astfel de situații apar atunci când codul într-un singur fir trebuie să aștepte terminarea sarcinii de lucru într-un flux diferit. Această sincronizare este realizată folosind o varietate de instrumente. O problemă importantă în acest context - centralizare fire (impas), în cazul în care mai multe fluxuri așteaptă nimic de la unul de altul.
- java.lang.Object. așteptați (). notificare (). notifyAll ()
- java.util.concurrent.locks. *
- java.util.concurrent.CountDownLatch
- java.util.concurrent.Semaphore
- java.util.concurrent.CyclicBarrier
- java.util.concurrent.Exchanger
- java.util.concurrent.Phaser
de control al memoriei de acces (date) într-un mediu multithread. Este important să o înțelegere a memoriei Modelul Java (Java de memorie model), domeniul de aplicare variabil, operații atomice și apariția condițiilor de rasă. fir-în condiții de siguranță de colectare.
Pentru o înțelegere mai profundă Vă recomandăm lectură:
Simultaneitatea - pe scurt posibilitatea de execuție, și apoi 2 mai mult cod Steytment simultan. Imaginați-vă că codul este apa care curge prin conductă. Este necesară pomparea apei de la A la B (cod de execuție analogie de la start - principal pentru a termina - ieșire). Având în vedere că nu puteți schimba dimensiunea conductei, pur și simplu adaugă un 1 tub suplimentar. Prin urmare, în teorie, vom obține o rată mare. Max „conducte“ care vor fi folosite cu un avantaj depinde de numărul de nuclee în procesor.
Clasele sunt multe și pot fi găsite în java.util.concurrent. De asemenea, vă sfătuiesc să citiți documentația oficială. Pentru utilizarea, totul depinde de ceea ce aveți de gând să o facă. exemplu Primitive:
exemplu Superior va folosi ExecutorService sau clase similare. Te sfătuiesc să verifici aici.
Răspuns 4 '15 septembrie la ora 09:59