Mi konkurencia, és melyek azok a konkurencia osztályok verem túlcsordulás orosz

Konkurencia, hogy működjön együtt több szálon kódot.

Általában ez azt értjük:

Management (create / start / stop) Java virtuális gép fonalak (hogy "menet", szálak). Kulcs minden ilyen áramban végezhetjük párhuzamosan a kódot a másik forrásból. Így bizonyos feladatok végezhetők egyszerre, mintha. Itt kell foglalkozni olyan fogalmakat, mint a szálak, menet medencék, Futura.

  • java.lang.Thread
  • java.lang.Runnable
  • java.util.concurrent.Callable
  • java.util.concurrent.Executor
  • java.util.concurrent.Executors
  • java.util.concurrent.ThreadFactory
  • Az áramlás szabályozása program (szálszinkronizációt). Folytatva az ilyen helyzetek, amikor a kód egy szál kell várni befejezése a feladat egy másik patak. Ez a szinkronizálás felhasználásával érjük el a különféle eszközök. Egy fontos probléma ebben az összefüggésben - egymásba szálak (holtpont), ahol több patakok várnak semmit egymástól.

    • java.lang.Object. várjon (). értesíti (). 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
  • Memory Access Control (adat) egy többszálú környezetben. Fontos, hogy tisztában legyenek a Java memória modell (Java memória modell), változó alkalmazási körét, az atomi műveleteket és a előfordulása verseny feltételeit. szálbiztosak gyűjtemény.

    Mélyebb megértéséhez Azt javaslom elolvasni:

    Konkurencia - röviden a lehetőségét a végrehajtás, majd további 2 kód Steytment egyszerre. Képzeljük el, hogy a kód a víz folyik a csövön keresztül. Meg kell szivattyúzni a vizet a B-be (kódfuttatást analógia elejétől - fő, hogy befejezze - exit). Tekintettel arra, hogy nem tudod megváltoztatni a mérete a cső, akkor egyszerűen hozzá további 1 csőbe. Ezért az elméletet, hogy egy nagy sebességgel. Max „csövek”, amely előnyösen alkalmazható függ a magok száma a processzorban.

    Az osztályok sok, és megtalálható az java.util.concurrent. Továbbá azt tanácsolom, hogy olvassa el a hivatalos dokumentációt. A használata, minden attól függ, hogy mit fog csinálni. Primitív példa:

    Superior például fogja használni ExecutorService vagy hasonló osztályok. Azt tanácsolom, hogy nézd meg itt.

    Válaszol szeptember 4 '15 at 09:59

    Kapcsolódó cikkek