Chcę, aby mój wątek czekał przez 30 minut. Czy są jakieś problemy z tym związane?Tworzenie wątku do spania przez 30 minut
Odpowiedz
Można dokonać snu nici przez 30 minut jak ten:
Thread.sleep(30 * // minutes to sleep
60 * // seconds to a minute
1000); // milliseconds to a second
Korzystanie Thread.sleep
nie jest z natury zły. Po prostu wyjaśniono, po prostu informuje program planujący wątek, aby zwrócił uwagę na wątek. Thread.sleep
jest zły, gdy jest niewłaściwie używany.
- Spanie bez zwalniania (wspólny) Zasoby: Jeśli wątek śpi z otwartym połączenia z bazą danych ze wspólnej puli połączeń, lub dużej liczby obiektów w pamięci, inne wątki nie mogą korzystać z tych zasobów. Te zasoby są marnowane, dopóki wątek śpi.
- Używany do zapobiegania race conditions: Czasami możesz praktycznie rozwiązać problem wyścigu, wprowadzając
sleep
. Ale to nie jest gwarantowany sposób. Użyj muteksu. Patrz Is there a Mutex in Java? Jako gwarantowany czasomierz: Czas spoczynku
Thread.sleep
nie jest gwarantowany. Może wrócić przedwcześnie zInterruptedException
. Lub może zaspać.Od documentation:
public static void sleep(long millis) throws InterruptedException
Powoduje wątek aktualnie wykonywanego spać (tymczasowo zaprzestać wykonywania) dla określonej liczby milisekund, zastrzeżeniem precyzji i dokładności zegarów i planiści systemowych .
Można również wykorzystać, jako kozla13 wykazał w swoim komentarzu:
TimeUnit.MINUTES.sleep(30);
lepsze rozwiązanie: TimeUnit.MINUTES.sleep (30); – kozla13
Odpowiedź Krumia już doskonale pokazuje, jak spać uruchomioną Thread
. Czasami wymóg snu lub wstrzymania wątku pochodzi z chęci wykonania operacji w późniejszym terminie. Jeśli tak jest, należy lepiej wykorzystać wyższy poziom pojęcia jak Timer
lub ScheduledExecutorService
:
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.schedule(operation, 30, TimeUnit.MINUTES);
Gdzie operation
jest Runnable
chcesz wykonać w 30 minut.
Korzystanie ScheduledExecutorService
, można również wykonywać operacje okresowo:
// start in 10 minutes to run the operation every 30 minutes
executor.scheduleAtFixedDelay(operation, 10, 30, TimeUnit.MINUTES);
- 1. Dodawanie 30 minut do chwili obecnej powoduje wrócić 30 minut
- 2. Alternatywa do spania wewnątrz wątku
- 3. Przerwanie wątku spania
- 4. Dodawanie 30 minut do datetime php/mysql
- 5. ASP.NET: Użytkownik nie będzie zalogowany przez dłużej niż 30 minut.
- 6. Przenoszenie plików, które mają 30 minut
- 7. Zapytanie MYSQL: najnowszy datownik + unikalna wartość z ostatnich 30 minut
- 8. Jak odzyskać zapisy z ostatnich 30 minut w MS SQL?
- 9. 30 minut w obliczeniu daty Java w roku 1900 tylko
- 10. Frustracje wątku - tworzenie wątku przekraczającego wartość SetMaxThreads
- 11. CPU Wykorzystanie wysokiej do spania przetwarza
- 12. PHP: Jak zmienić czas trwania ciągu na format czasu ISO 8601? (np. "30 minut" do "PT30M")
- 13. Tworzenie ServerSocket w osobnym wątku?
- 14. Spanie wątku doładowania przez kilka nanosekund
- 15. jak zakończyć wątek spania w pthread?
- 16. tworzenie obiektów lokalnych wątku na scala
- 17. Prowadzenie Cron co 30 sekund
- 18. Tworzenie widoku na wątku tła, dodając go do głównego widoku głównego wątku.
- 19. Tworzenie zmaterializowanego widoku, który jest odświeżany co 5 minut
- 20. Tworzenie zegara cyfrowego za pomocą wątku
- 21. Tworzenie programu do nadawania przez avahi
- 22. Czy w funkcji flex występuje funkcja spania?
- 23. Przypinanie wątku do rdzenia w cpuset przez C
- 24. Zastosowanie tworzenia wątku przez rozszerzenie klasa gwint
- 25. Funkcja spania dla platformy krzyżowej dla C++
- 26. Jak przetestować funkcję spania w golang
- 27. Crop MP3 do pierwszych 30 sekund
- 28. Wykonaj operację co x sekund przez y minut w C#
- 29. Jak pogrupować szeregi czasowe przez 10 minut za pomocą pand?
- 30. Tworzenie wątku, który działa przez cały czas, gdy moja aplikacja jest uruchomiona
Tak, istnieje mnóstwo problemów, ponieważ nitka zrobi nic przez 30 minut. 'Thread.sleep (1000 * 60 * 30);' i zapakuj go w try-catch – Kon
zamiast spania w wątku spróbuj użyć timera. –
Co próbujesz osiągnąć? Czy to po prostu grać z wątkami? – chrylis