Mi a párhuzamosság a Java-ban? - Teljes útmutató a párhuzamosságról Java-ban

Tartalomjegyzék:

Anonim

Mi a párhuzamosság a Java-ban?

A mai világban minden gyorsan fejlődik. Mindegyikben és mindenben mindig fejlesztési lehetőségek vannak. Ugyanez történik a programozási nyelvünkkel. Ma a modern technológiáinkkal elvárjuk, hogy a dolgok könnyedén és gyorsan történjenek. Ha egyszerre több dolgot csinálnak, vagy egyszerre több dolgot csinálnak, akkor a párhuzamosság fogalma merült fel. Tehát mi a valódi párhuzamosság, mi a felhasználása, miért van ez valóban szükséges, és még sok más. Megpróbáljuk megérinteni az ilyen kérdéseket, és egyenként megválaszoljuk azokat a cikkben. Tehát vigyük a megbeszélésünket egy nagyon alapvetõ közös szakaszba, amely a párhuzamosság meghatározása. Ebben a témában megtudjuk, mi a párhuzamosság a Java-ban.

A párhuzamosság meghatározása?

Tehát mi a párhuzamosság valójában? Nos, hogy erre válaszoljunk, vegyünk egy közös forgatókönyvet. Tegyük fel, hogy a cikk elolvasása közben több dolgot próbál meg egyszerre tenni, mert lehet, hogy megjegyzést is készít, esetleg megpróbálja megérteni, vagy valamire gondol. Tehát egyszerű szavakkal több dolgot próbál meg tenni párhuzamosan. Erre utal egy párhuzamosság. A párhuzamosság egyszerűen több feladatot hajt végre egymással párhuzamosan. Ebben a cikkben a Java, mint programozási nyelv területének párhuzamosságáról fogunk beszélni.

Valójában a Java-ban vagy általában bármilyen programozási nyelven a párhuzamosság hordozása a szál. Ezen szálak alapvető szerepe a feladatok párhuzamos végrehajtásának megkönnyítése. Közben tegyük fel a szál alapvető meghatározását.

Tehát mi a szál?

A szál egy könnyű folyamat, saját hívásveremmel. A szálak mindazonáltal jogosultak hozzáférni az ugyanazon folyamat alatt végrehajtó más szálak megosztott adataihoz. A Java alkalmazáson belül számos szálat használhatunk a párhuzamos feldolgozás vagy párhuzamosság eléréséhez.

Most térjünk át a következő témához, azaz:

Párhuzamosság a Java meghatározásban?

Tehát a Java-ban vagy bármilyen más programozási nyelvben, mint például a C # stb., Az OOP összes nyelve rendelkezik a menetezés fogalmával. A Java-ban különféle folyamatok vannak, amelyek különböző szálak készítésével futnak a párhuzamosság elérése érdekében

Tehát ezt az egyszerű meghatározást követően tárgyaljuk meg új témánkat, amely a következő:

Mi teszi a Java alkalmazás egyidejűvé?

Az első osztály, amelyre egy java alkalmazás egyidejű létrehozásához szükség van, a java.lang.Thread osztály. java.lang.Thread osztály felelős az összes párhuzamossági koncepcióért a Java programozási nyelvben. Ezután rendelkezünk a java.lang.Runnable felülettel, amely elválasztja a szál viselkedését a szál osztályból.

Más osztályt, amelyre fejlett alkalmazás létrehozásához szükségünk lesz, a Java 1.5-hez hozzáadott java.util.concurrent csomag fogja használni.

Most ezzel felvetünk egy új kérdést, amely a következő:

A Java párhuzamosság valóban ilyen egyszerű?

Mivel úgy tűnik, hogy a párhuzamosság végrehajtása a Java-ban meglehetősen egyszerű. Valójában ez nem így van. Vigyázzunk rá.

A fenti megbeszélésünk általában azt a benyomást kelti, hogy a párhuzamosság valóban egyszerű, jó koncepció és meglehetősen könnyű végrehajtani. Nos, ha jobban figyeljük és megpróbáljuk megérteni, azt találjuk, hogy az alapfogalmak jó megértése, valamint az elérendő célok alapos megértése megköveteli.

Ha összehasonlítjuk az egyidejű alkalmazásokat és az egyetlen menetes alkalmazást, általában azt tapasztaljuk, hogy az egyidejű alkalmazás a tervezés és a megértés szempontjából összetett. A több szál által végrehajtott kód különös figyelmet és erőforrásokat igényel a megosztott adatok eléréséhez. A nem megfelelő szinkronizálás miatt felbukkanó hibákat nehéz hibakeresni és kijavítani. Ezenkívül a legtöbb esetben ezeket a hibákat a kezdeti szakaszban nem azonosítják, sőt, prod módban is észlelik, amelyet még nehezebb reprodukálni.

A hibák és a gyakori hibák mellett az egyidejű szálak több erőforrást igényelnek az alkalmazás futtatásához

Probléma és az egyidejűség javítása - Magyarázat példa szerint

Tehát alapvetően kétféle probléma létezik, amelyek párhuzamosság miatt adódnak. Ezeket a problémákat nagyjából két kategóriába lehet sorolni

  • Menet interferencia hibák
  • Memória-konzisztencia hibák

Megértjük mindegyiket egyenként

Menet-interferencia hibák - értjük meg egy egyszerű példával.

Tegyük fel, hogy van egy számláló funkciónk, amelynek alapvető szerepe egy szám számlálójának vagy számának növelése. Tegyük fel, hogy van két szálaink, az A szál és a B szál. Tegyük fel, hogy az A szál a kezdeti értéket 0-nak tekinti. Most, a következő lépések futnak egymás után.

  1. Az A szál a kezdeti értéket 0-nak tekinti
  2. A B szál a kezdeti értéket 0-nak tekinti
  3. Menet A növekedés értéke 1-rel. Az új érték most 1
  4. A B szál ezzel párhuzamosan növelje az értéket 1-re.
  5. Az A szál frissített értéket ír, amely 1, a memóriacellába
  6. A B szál ugyanezt a lépést megismétli, amelyet a memóriacellának frissített értéke 1-nek írunk

Tehát itt felmerül a probléma. Két A és B szál, hajtsa végre a kódot kétszer, és a várt érték 2, de ami tükröződik 1. Ez a fő probléma, amit több szál okozhat

Hogyan lehet ezt megoldani?

A szál interferencia hibák megoldhatók a megosztott változókhoz való hozzáférés szinkronizálásával. Szinkronban kell lennünk a megosztott adatok közötti frissített értékek között

Ezzel vizsgáljuk meg a második típusú hibát

Memória-konzisztencia hibák

A memória inkonzisztencia hibái általában akkor fordulnak elő, amikor a különböző szálak megpróbálják leolvasni, vagy ugyanazon adatról következetlen nézetek vannak. Ez általában akkor fordul elő, amikor az első szál frissít néhány megosztott adatot, és ezt a frissített értéket nem továbbítja a második vagy a másik szálra, és a régi adatokat olvassa.

Hadd lássam miért történik ez?

Nos, ennek számos oka lehet. Általában a fordító általában sokféle optimalizálást hajt végre az alkalmazás számára a teljesítmény javítása érdekében. Frissítheti az utasításokat is a teljesítmény optimalizálása érdekében. Még általában a processzorok is megpróbálják optimalizálni a kódokat, például egy CPU a főmemória helyett a gyorsítótárból vagy az ideiglenes regiszterből beolvashatja a változó aktuális értékét.

Következtetés - Mi a párhuzamosság a Java-ban?

A párhuzamosság az OOP bármely nyelvének nagyon fontos jellemzője. A szálak megadása azt a funkciót kínálja, hogy több folyamatot párhuzamosan hajtsunk végre. Segít bennünket, hogy gyorsabban teljesítsük komplex feladatunkat. A profik mellett azonban a párhuzamosságnak kevés hátránya is van. A szálak használata erőforrások sok felhasználását okozza

Ajánlott cikkek

Ez egy útmutató arra, hogy mi a párhuzamosság a Java-ban. Itt példákkal tárgyaltuk a párhuzamosság problémáit és javítását. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. Mi a sokrétű java?
  2. Hogyan lehet csatlakoztatni az adatbázist a Java-ban?
  3. Mi a sokrétű java?
  4. Mi a J2EE?