Je vektorové vlákno bezpečné v jazyku Java?
Je vektorové vlákno bezpečné v jazyku Java?

Video: Je vektorové vlákno bezpečné v jazyku Java?

Video: Je vektorové vlákno bezpečné v jazyku Java?
Video: Everything you should know about thread safety in 2 minutes or less 2024, Apríl
Anonim

Vektor všetky metódy sú synchronizované. Takže ho použiť z viacerých vlákna je " bezpečné ". Synchronizovať musíte iba vtedy, ak potrebujete, aby bol proces čítania-vyhodnocovania-zápisu atomický. Synchronizácia vašich vlastných metód nevyhnutne neznamená, že váš kód niť - bezpečné pre tie scenáre.

Vzhľadom na to, je vlákno zoznamu bezpečné v jazyku Java?

V skutočnosti všetky triedy kolekcií (okrem Vector a Hashtable) v java . util balík nie sú niť - bezpečné . Preto ten nový zbierky ( Zoznam , Set, Map atď.) neposkytujú vôbec žiadnu kontrolu súbežnosti, aby poskytovali maximálny výkon v aplikáciách s jedným vláknom.

Podobne, ktorá kolekcia je v jazyku Java bezpečná pre vlákna? A niť - bezpečné trieda je trieda, ktorá zaručuje vnútorný stav triedy, ako aj vrátené hodnoty z metód, sú správne pri súbežnom vyvolaní z viacerých vlákna . The zber triedy, ktoré sú niť - bezpečný v Jave sú Stack, Vector, Properties, Hashtable atď.

Ak vezmeme do úvahy toto, je vlákno Java HashSet bezpečné?

HashSet nie je HashSet bezpečný pre vlákna v Java nie je vlákno bezpečné pretože štandardne nie je synchronizovaný. Ak používate HashSet vo viacvláknovom prostredí, kde k nemu pristupujú viaceré vlákna súbežne a štrukturálne modifikované aj o jediné niť potom sa musí externe synchronizovať.

Čo je ArrayList alebo vektor bezpečné pre vlákna?

Vektor je pomalý, ako to je vlákno bezpečné . V porovnaní ArrayList je rýchly, pretože nie je synchronizovaný. Teda v ArrayList dve alebo viac vlákna môže súčasne získať prístup ku kódu Vektor je obmedzený na jeden niť v tom čase. A Vektor predvolene zdvojnásobí veľkosť svojho poľa.

Odporúča: