Je Vector thread bezpečný v Javě?
Je Vector thread bezpečný v Javě?

Video: Je Vector thread bezpečný v Javě?

Video: Je Vector thread bezpečný v Javě?
Video: Vectors in Java: The 1 Situation You Might Want To Use Them 2024, Duben
Anonim

Vektor všechny metody jsou synchronizovány. Takže používat to z více vlákna je " bezpečný ". Synchronizovat je potřeba pouze v případě, že potřebujete, aby byl proces čtení-vyhodnocování-zápis atomický. Synchronizace vlastních metod nutně neznamená, že váš kód vlákno - bezpečný pro ty scénáře.

Vzhledem k tomu, je vlákno seznamu v Javě bezpečné?

Ve skutečnosti všechny třídy kolekce (kromě Vector a Hashtable) v Jáva . util balíček nejsou vlákno - bezpečný . Proto ta nová sbírky ( Seznam , Set, Map atd.) neposkytují vůbec žádnou kontrolu souběžnosti, aby byl zajištěn maximální výkon v aplikacích s jedním vláknem.

Podobně, která kolekce je v Javě bezpečná pro vlákna? A vlákno - bezpečný class je třída, která zaručuje vnitřní stav třídy i vrácené hodnoty z metod, jsou správné při současném vyvolání z více vlákna . The sbírka třídy, které jsou vlákno - bezpečný v Javě jsou Stack, Vector, Properties, Hashtable atd.

Když to vezmeme v úvahu, je vlákno Java HashSet bezpečné?

HashSet není HashSet bezpečný pro vlákna v Jáva není závit bezpečný protože ve výchozím nastavení není synchronizován. Pokud používáte HashSet ve vícevláknovém prostředí, kde k němu přistupuje více lidí vlákna souběžně a konstrukčně upraveny i o jediný vlákno pak se musí synchronizovat externě.

Který je ArrayList nebo vektorový?

Vektor je pomalý, jak to je závit bezpečný . V porovnání ArrayList je rychlý, protože není synchronizovaný. Tedy v ArrayList dva nebo více vlákna může přistupovat ke kódu ve stejnou dobu Vektor je omezena na jednu vlákno včas. A Vektor výchozí zdvojnásobení velikosti jeho pole.

Doporučuje: