Problem z wątkiem.

Problem z wątkiem.
R5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

Witam.

Chciałbym napisać program w którym z jednym elementów jest wątek w którego metodzie run znajduje się nieskończona pętla while w której sprawdzam warunki i inkrementuje poszczególne wartości. Mam np. tablice 12 struktur i właśnie te struktury modyfikuje w tej pętli. Oprócz wątku modyfikacji struktur dokonują także metody innej klasy.

Problem wychodzi wtedy jak uruchamiam wątek thread.start a następnie wywołuje metodę korzystającą ze wspólnych zasobów tj. tablicy struktur, program cały czas zawiesza działanie(nie wywala się ). Co robie źle? Próbowałem wszystkie metody korzystające z tablicy struktur wsadzić do klasy która dziedziczy po klasie Thread ale zachowanie jest to samo. Wiecie gdzie robię bład?
Pozdrawiam

C4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 37
0

pokaż kod.

R5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

Nie mogę opublikować kodu, bo nie jest mój ja go tylko przerabiam.

Mam jeszcze pytanie w jaki sposób rozwiązać problem, chciałbym żeby w jednym wątku np. X, w metodzie run znajdowała się pętla while, a inny obiekt zawierał metody modyfikujące zmienne które wykorzystuje wątek X. Czy w ogóle może tak to wyglądać? Czy może wszystkie metody oraz dane powinny znajdować się klasie która dziedziczy po klasie Thread (w tym przypadku w wątku X )? Czy podczas wykonywania metod poza wątkiem X , trzeba wątek X blokować na jakiś czas ? Jak Wy byście to zrobili?

Pozdrawiam

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
R5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
0

Rozwiązałem problem, w wątku do pętli while w metodzie run dodałem opóźnienie TimeUnit.NANOSECONDS.sleep(1); i program działa bez wieszania.
Wie ktoś dlaczego teraz działa?

kult
  • Rejestracja: dni
  • Ostatnio: dni
1

Wątek przestał zjadać 100% procka?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.