Az iterátorok szálai biztonságosak?

Pontszám: 4,3/5 ( 51 szavazat )

Egyik iterátor sem szálbiztos . Ha az alapul szolgáló gyűjtemény iteráció közben módosul, egy ConcurrentModificationException jelenik meg. Még a szinkronizált gyűjtemények iterátorai sem szálbiztosak – manuálisan kell szinkronizálnia. Az egyik kivétel a CopyOnWriteArrayList, amely az iteráció során pillanatképet tárol.

Biztonságosak a C++ iterátorok szálai?

Nem, egyik megközelítés sem biztonságos, ha elkezd írni az adatstruktúrába. ... Több szál is bővítheti a tárolót és új elemeket fűzhet egyidejűleg. A tároló bővítése nem érvényteleníti a meglévő iterátorokat vagy indexeket. *

Biztonságos az iterátor következő szála?

Elsőre úgy tűnhet, hogy a hasNext() és next() hívása nem atomi, mivel egy másik szál is meghívhatja a hasNext() függvényt! ... A Parallel Iterator azonban teljesen szálbiztos!

Biztonságos a többszálú szál?

Szálbiztos: A megvalósítás garantáltan versenyfeltételektől mentes, ha egyszerre több szál is eléri . Feltételesen biztonságos: A különböző szálak egyidejűleg különböző objektumokhoz férhetnek hozzá, és a megosztott adatokhoz való hozzáférés védve van a versenyfeltételektől.

Mi tekinthető cérnabiztosnak?

"Egy osztály szálbiztos , ha megfelelően működik, ha több szálról éri el , függetlenül a szálak végrehajtásának ütemezésétől vagy összeillesztésétől a futási környezet által, és nincs további szinkronizálás vagy egyéb koordináció a hívó kód részéről. "

Minden, amit a cérnabiztonságról tudnia kell 2 perc alatt vagy kevesebben

35 kapcsolódó kérdés található

Biztonságos a HashMap szál?

A HashMap nincs szinkronizálva. Nem szálbiztos , és nem osztható meg sok szál között megfelelő szinkronizálási kód nélkül, míg a Hashtable szinkronizált.

Hogyan érhető el egy szál biztonsága?

Szinkronizált társaikkal ellentétben a párhuzamos gyűjtemények szálbiztonságot érnek el azáltal, hogy adataikat szegmensekre osztják fel . Egy ConcurrentHashMap-ben például több szál zárolást szerezhet a különböző térképszegmenseken, így több szál is hozzáférhet a térképhez egyidejűleg.

Miért nem szálbiztos az ArrayList?

Az ArrayList nem szinkronizált, mert ha az ArrayList szinkronizálva van, akkor egyszerre csak egy szál dolgozhat az ArrayList-en, és a többi szál nem hajthat végre más műveleteket az ArrayList-en, amíg az első szál fel nem oldja a zárolást. Ez többletköltséget okoz és csökkenti a teljesítményt.

Az ArrayList szálbiztonságos?

Az ArrayList viszont nincs szinkronizálva, ezért nem biztonságos a szál . Ezt a különbséget szem előtt tartva, a szinkronizálás használata teljesítménybeli sikert jelent. Tehát ha nincs szüksége szálbiztos gyűjteményre, használja az ArrayList-et.

A primitívek cérnabiztosak?

Alapvetően: A Java primitívek nem szálbiztosak !

Biztonságos a linkelt lista?

4 válasz. A LinkedList nem szálbiztos . A zárolást magadnak kell elvégezned. Ha megfelel az Ön igényeinek, próbálja ki helyette a ConcurrentLinkedQueue vagy LinkedBlockingDeque programot, ezek szálbiztosak, de kissé eltérnek a LinkedListtől.

A ConcurrentHashMap szál biztonságos?

A ConcurrentHashMap főbb pontjai: A ConcurrentHashMap osztály szálbiztos, azaz több szál is működhet egyetlen objektumon minden komplikáció nélkül. ... A ConcurrentHashMap alapértelmezett párhuzamossági szintje 16.

A StringBuilder szálbiztonságos?

A StringBuilder kompatibilis a StringBuffer API-val, de nem garantálja a szinkronizálást. Mivel nem szálbiztos megvalósítás , gyorsabb, és olyan helyeken ajánlott használni, ahol nincs szükség szálbiztonságra.

A Push_back vektor cérnabiztos?

2 válasz. Nem szálbiztos, mert egy vektor összefüggő, és ha nagyobb lesz, akkor előfordulhat, hogy egy vektor tartalmát egy másik helyre kell mozgatnia a memóriában.

A C++ STL szálbiztonságos?

Az STL SGI megvalósítása csak abban az értelemben szálbiztos, hogy a különböző tárolókhoz való egyidejű hozzáférés biztonságos, és a megosztott tárolókhoz való egyidejű olvasási hozzáférés biztonságos. ... Ez az egyetlen módja annak, hogy biztosítsa a teljes teljesítményt az egyidejű hozzáférést nem igénylő tárolók számára.

Az std :: cérnabiztosnak tűnik?

Nem, a C++ specifikáció nem garantálja a menetbiztonságot az STL-konténereken végzett műveletek specifikációjában. Ha fontos a menetbiztonság, gondoskodjon saját reteszelésről. Ennek ellenére a különböző megvalósítások különböző garanciákat kínálnak.

Melyik a jobb LinkedList vagy ArrayList?

Az ArrayList belsőleg dinamikus tömböt használ elemeinek tárolására. A LinkedList a Duplán linkelt listát használja elemei tárolására. ... Az ArrayList gyorsabb az adatok tárolásában és elérésében. A LinkedList gyorsabban kezeli az adatokat.

Mi történik, ha kétszer indítunk egy szálat?

Egy szál elindítása után soha nem indítható újra . ... Ha így tesz, a rendszer egy IllegalThreadStateException kivételt dob ​​fel. Ebben az esetben a szál egyszer fut, de másodszor kivételt dob.

Melyik lista szálbiztos?

A Vector és a Hashtable az egyetlen két örökölt gyűjtemény, amelyek szálbiztosak. Szinkronizált gyűjtemények a Collection segédprogram osztályának synchronizedXXX(collection) gyári metódusaival hozhatók létre. Cérnabiztosak, de gyenge a teljesítményük.

Hogyan lehet egy ArrayList szálat biztonságossá tenni?

Az ArrayList szálbiztos változata, amelyben az összes mutációs művelet (pl. add, set, remove...) az alapul szolgáló tömb külön másolatának létrehozásával valósul meg. A szálbiztonságot úgy éri el, hogy külön másolatot hoz létre a Listából, amely másképpen működik, mint a vektoros vagy más gyűjtemények a szálbiztonság biztosítására.

Melyik a jobb ArrayList vagy vektor?

Az arraylist jobb választás , ha a program szálbiztos. A vektor és a tömblista több elem hozzáadásával helyet igényel. vektor minden alkalommal megduplázza a tömb méretét, míg az arraylist minden alkalommal 50%-kal nő. ... jó szokás a tömblistát nagyobb kezdeti kapacitással összeállítani.

Biztonságos a vektorszál?

A Vector egy szálbiztos gyűjtemény – alapértelmezés szerint minden metódusa szinkronizálva van. Ezért javasolt az ArrayList használata helyette – ez nem szálbiztos, ami jobb teljesítményt eredményez az egyszálas alkalmazásoknál.

Az osztályváltozók szálai biztonságosak?

A JVM-ben minden szál megkapja a saját Java veremét. ... A JVM szerkezetét tekintve a helyi változók, metódusparaméterek és visszatérési értékek eredendően "szálbiztosak". De a példányváltozók és az osztályváltozók csak akkor lesznek szálbiztosak, ha megfelelően tervezi meg az osztályt .

Biztonságos a statikus metódus menete?

Köztudott, hogy a statikus metódusok, amelyek paraméterei az Immutable Objects, szálbiztosak , a Mutable Objectek pedig nem.

Biztonságos a statikus szál?

Nem, eleve nem szálbiztosak (kivéve, ha nem hívnak kódot, de ezt a példánymetódusokkal is megkapod). A szálbiztonság magában foglalja a globálisan elérhető erőforrások szinkronizálását is. Egy statikus metódus nem férhet hozzá ugyanannak az osztálynak egyetlen statikus tagjához sem; de még mindig lehetnek menetbiztonsági problémák.