Sleep nie zawieszający wątku

0

Cześć,
Mam do Was pytanie z kategorii programowania współbieżnego. Obecnie używam metody sleep(). Spełnia ona moje wymagania i robi to co ma robić ale niestety okazuje się że przy większej ilości użytkowników serwer zaczyna klękać a to dla tego że metoda ta zawiesza wątek na serwerze. Jak takich wątków zaczyna wisieć 'dziesiąt' serwer niemiłosiernie zwalnia. I teraz pytanie do Was. Czy jest jakaś fajna metoda które wstrzymała by działanie aplikacji na określony czas ale nie blokowała wątku na serwerze tylko zwalniała go aż do momentu wybudzenia?

0

Kontekst watku musi byc gdzies trzymany

Chyba ze caly kontekst mozesz wywalic do smieci ale wtedy po co Ci ten watek. I czemu w ogole sleepa robisz?

3

Poczytaj o pulach wątków i ExecutorService. To co robisz ze sleepem to herezja.

1

W pracy mam napisany piekny kod przez Comarch ;) Proces trwa ~30s z czego sleep zajmuje od min 26s do 28s. Wyszli na wyzszy level i losują sobie dlugosc trwania sleepa o.O. Wywal te sleepy na boga i uzyj jak koledzy mowia ExecutorService. Zaprojektuj to rozwiazanie inaczej i nie uzywaj sleepa bo na 100% da sie to tak zrobic albo kiedys ktos bedzie o Tobie mowil tak samo brzydko jak ja o kolegach z Comarchu :)

0

Podam Ci prosty przykład, współdzielisz z żoną samochód. Przyjechałeś po pracy, chcesz odpocząć dwie godziny i jedziesz na siłownię. Twoja żona chciałaby w tym czasie pojechać do koleżanki na kawę. Używając sleepa, nie może wziąć samochodu w czasie w którym jest de facto nie używany.

Powinieneś zastanowić się nad planowaniem zadań, poczytaj sobie o ScheduledExecutorService, w którym możesz planować czasowo wykonywane zadania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1