Logo pl.removalsclassifieds.com

Różnica między snem a oczekiwaniem (ze stołem)

Spisu treści:

Anonim

Java ma kilka metod wykonywania określonych czynności. Metoda to grupa kodu, która działa tylko wtedy, gdy jest wywoływana; i może, ale nie musi, zwrócić wynik.

Do wielowątkowości używane są metody takie jak spanie i czekanie. Oba z nich wstrzymują się i wysyłają wątek do oczekiwania, ale mają poważne różnice w działaniu.

Sen a czekanie

Różnica między metodą sleep() i wait() polega na tym, że metoda sleep() jest używana w programie do wstrzymania wykonywania bieżącego wątku na określony czas, podczas gdy metoda wait() jest używana w programie do wstrzymania lub zawieszenia bieżący wątek, dopóki nie zostaną wywołane określone metody.

Podczas korzystania z metody uśpienia bieżący wątek nie traci własności monitora. Sen jest metodą statyczną i jest częścią wątku klasowego. Po upływie czasu oczekiwania wątek powraca do pierwotnego stanu, w którym można uruchomić. Zapewnia pełne wykorzystanie procesora podczas oczekiwania.

Natomiast metoda wait() jest używana w programie Java, aby nakazać bieżącemu wątkowi czekać, aż inny wątek nie zostanie wywołany dla tego obiektu. Następnie wątek kontynuuje wykonywanie, gdy uzyska kontrolę nad monitorem. Nie jest to metoda statyczna w przeciwieństwie do snu i jest częścią klasy obiektów.

Tabela porównawcza między snem a oczekiwaniem

Parametry porównania Sen Czekać
Klasa Metoda snu jest częścią klasy wątków Metoda wait jest częścią klasy obiektów
Rodzaj metody Sen jest metodą statyczną Czekanie nie jest metodą statyczną
Technika wywoływania Metoda uśpienia może być wywołana spoza zsynchronizowanego kontekstu Metoda wait może być wywołana tylko z zsynchronizowanego kontekstu
Zwolnienie blokady Metoda uśpienia nie zwalnia blokady na obiekcie przez określony czas podczas synchronizacji Metoda czekania zwalnia blokadę na obiekcie, aby mieć szansę na wykonanie podczas synchronizacji
Deklaracja publiczny statyczny pusty sen () public final void wait()

Czym jest sen?

Wątek sleep() jest statyczną metodą w programie Java, która zawiesza bieżący wątek i ustawia go w stan oczekiwania na określony czas. Po zakończeniu stanu oczekiwania i czasu, stan wątku zmienia się na stan, w którym można uruchomić. A następnie czeka na dalsze wykonanie przez procesor.

Celem tej metody jest stworzenie kilkusekundowego opóźnienia w programie przy jednoczesnym maksymalnym wykorzystaniu procesora. Jeśli system jest zajęty lub przeciążony, czas oczekiwania lub przerwy jest dłuższy, w przeciwnym razie byłby krótszy lub równy rzeczywistemu czasowi.

Zwracany typ metody uśpienia można uznać za nieważny, ponieważ nie zwraca żadnej wartości. Wątek uśpienia nie traci monitora ani nie blokuje już nabytego wątku. Jeśli w jakimkolwiek przypadku sen zostanie zakłócony, wątek wyrzuci Interrupted_Exception. Rzeczywisty czas, przez jaki wątek będzie uśpiony, zwykle zależy od harmonogramów i zegarów systemowych, które są częścią systemu operacyjnego.

Składnia metody snu to – public static void sleep (długie milisekundy)

publiczny statyczny pusty sen (długie milisekundy, int nanosekundy)

Tutaj milisekundy i nanosekundy to czas, przez który wątek będzie spał.

Co to jest czekanie?

Wait() to metoda używana do komunikacji międzywątkowej. Za każdym razem, gdy używany jest wątek wait(), wątek wywołujący lub bieżący jest wstrzymywany i zawieszany, dopóki w systemie nie zostaną wywołane metody takie jak notify() lub notifyAll().

Metoda notyfikacji() obudzi określony wątek, podczas gdy notyfikacjaAll() ma zastosowanie do każdego wątku. Po zsynchronizowaniu metoda wait rezygnuje z blokady zasobów. Nie ma zwracanej wartości metody Wait, stąd można powiedzieć, że zwraca void.

Dwa wyjątki metody Wait to Interrupted_Exception (gdy bieżący wątek jest przerywany podczas jego uśpienia) i IllegalMonitorStateException (gdy bieżący wątek nie jest właścicielem obiektu na monitorze).

Metoda Wait jest częścią klasy obiektów. Metoda ma zastosowanie tylko i może być wywołana przez zsynchronizowany blok. Metoda oczekiwania zwalnia zawieszony lub zablokowany ekran podczas synchronizacji. A metoda Wait umożliwia wyłącznie zsynchronizowanym wielu wątkom dostęp do tego samego obiektu jeden po drugim.

Składnia metody Wait to – public final void wait()

Główne różnice między snem a oczekiwaniem

Wniosek

Metody Sleep and Wait są natywnymi metodami Javy. Oba są szeroko stosowane, aby bieżący wątek przechodził w stan, w którym nie można uruchomić. Obie metody służą do wielowątkowości w programie.

Metoda uśpienia zapewnia wyłączną opcję blokowania ekranu na określony czas, który zwykle trwa od nanosekund do milisekund. Ale metoda czekania blokuje lub zawiesza ekran do momentu wywołania innej metody, przez co czas trwania nie jest określony, jak podczas korzystania z metody uśpienia.

Różnią się one między sobą specyficznym działaniem, takim jak klasa, metoda, synchronizacja i czas trwania utrzymania i zwolnienia blokady oraz kilka innych parametrów. Często programiści nie wiedzą, która metoda może być idealna do uśpienia wątku. Wykorzystanie metod zależy od wymagań, takich jak potrzeba, pilność i czas trwania bieżącego wątku.

Różnica między snem a oczekiwaniem (ze stołem)