Czego właściwie używasz w tej metodzie lockInterruptibly
? Przeczytałem API, ale nie jest to dla mnie jasne. Czy ktokolwiek mógłby wyrazić to innymi słowami?Rzeczywiste użycie blokady w celu ponownego użycia ReentrantLock
7
A
Odpowiedz
3
Logika jest taka sama jak dla wszystkich metod blokowania przerywalnego: umożliwia natychmiastową reakcję wątku na sygnał interrupt
wysłany z innego wątku.
Sposób korzystania z tej konkretnej funkcji zależy od projektu aplikacji. Na przykład może być użyty do zabicia kontyngentu wątków w puli, które czekają na zdobycie blokady.
7
lockInterruptibly()
może zablokować, jeśli blokada jest już zajęta przez inny wątek i będzie czekać, aż blokada zostanie nabyta. Jest to takie samo, jak w przypadku zwykłego lock()
. Ale jeśli inny wątek przerywa oczekujący wątek, zostanie on zgłoszony jako lockInterruptibly()
.
Powiązane problemy
- 1. Binary Semaphore vs ReentrantLock
- 2. Czy ten wątek użycia blokady jest bezpieczny?
- 3. Dyrektywa ponownego użycia ngClass w AngularJS
- 4. Dziedziczenie tylko do ponownego użycia kodu C++
- 5. Plusy i minusy, utrzymywanie stałych odniesień do czcionki w celu ponownego użycia w różnych układach?
- 6. Rzeczywiste przypadki użycia barier (DSB, DMB, ISB) w ARM
- 7. Czy istnieje sposób ponownego użycia instancji zadania?
- 8. Jak skopiować pole Vagrant do ponownego użycia
- 9. Przeróbki testowe ponownego użycia dla rodziny klas
- 10. Zmienna ponownego użycia TensorFlow z tf.layers.conv2d
- 11. Refinansowanie Ember-Cli w celu użycia strąków
- 12. Dlaczego blokady są Serializable w java?
- 13. Zsynchronizowany z ReentrantLock na wydajności
- 14. Konwertowanie symboli wieloznacznych powłoki w celu ponownego wyodrębnienia
- 15. Zapisywanie i przywracanie stosów UINavigation w celu ponownego połączenia
- 16. Jak cacheować AVPlayerItem (wideo) do ponownego użycia w UITableview
- 17. Użycie qw (: const) z instrukcją użycia
- 18. nieoczekiwane "użycie" (T_USE) podczas próby użycia kompozytu
- 19. Czy istnieje sposób ponownego użycia poprzedniego komentarza dotyczącego zatwierdzenia git?
- 20. Programowe dodawanie UITableView - jak ustawić identyfikator ponownego użycia dla komórek?
- 21. Jaki jest najlepszy sposób ponownego użycia parsera Lua?
- 22. Typy ponownego użycia podczas generowania kontraktu klienta WCF Programowo
- 23. DbContext nie pozostawi połączenia otwartego do ponownego użycia
- 24. Używanie stringowania w celu zmniejszenia użycia pamięci przez klienta sieciowego
- 25. Przekazywanie AddressOf do funkcji w VB.NET w celu użycia AddHandler
- 26. Wymuszanie użycia elementów div w celu ich dotykania w pionie
- 27. Omówienie mnożnika w układzie automatycznym w celu użycia pozycjonowania względnego
- 28. Rzeczywiste rozwiązanie mobilne
- 29. Czy konieczne jest umieszczenie szablonów w mapie do ponownego użycia w Go?
- 30. Uzyskaj rzeczywiste oszczędności czasu letniego w milisekundach
Jak stwierdzono "pozwala to wątkowi natychmiast reagować na sygnał przerwania wysłany do niego z innego wątku", oznacza to, że gdy wątek wywoła lockInterruptibly(), będzie czekać na sygnał przerwania z innego wątku, chyba że blokada jest natychmiast dostępna dla zdobyć to ?. Wątek, który wysyła sygnał przerwania, zatrzymuje blokadę do momentu przerwania sygnałów? – MKod
Każdy wątek może przerwać wątek, nie musi to być ten, który trzyma blokadę. –
Przerwania wątków Java różnią się od przerwań sprzętowych lub systemowych. Przerwa w dostarczaniu jest synchroniczna i nie ma charakteru wyprzedzającego, a nie asynchronicznego i zapobiegawczego, tj. Nie występują one w dowolnym punkcie i nie wstrzymują (i nie wznawiają) uruchomionego kodu. Program musi je przetestować jawnie. Więc, czy mówisz, że 'lockInterruptibly' ciągle testuje je jawnie? – overexchange