kolejka watków

0

mam sobie jakiś wątek np nazwijmy go w1 i mój w1 jest uruchamiany n razy w pętli. Jak zrobić ,by uruchomiło się n wątków po kolei, a nie naraz. Dodatkowo wątek zawiera metodę(nazwijmy to m1) która uruchamia inną metodę. obie są zsynchronizowane, a nadal wali illegal monitorem, nie wiem gdzie dać wait i notify help !!!

0

Jak zrobić ,by uruchomiło się n wątków po kolei, a nie naraz
Jak po kolei, to po co Ci wątki?

a nadal wali illegal monitorem
Googlnij se... tak to ma być:

synchronized(dupa) { dupa.wait(); }
inny wątek:
synchronized(dupa) { dupa.notify(); }

</quote>
0

do testów, chodzi o to, że jeżeli potrzebujesz na bieżąco przetwarzać i wyświetlać wyniki to wątki szybciej działają(nie pytaj czemu) problem jest taki, że jeżeli chcę wait i notify to nie mogę wątku pętlić, a jedynie ew po kolei podpinać :) jak bym miał wielordzeniową\wieloprocesorową maszynę to nie było by to problemem:)

0

Zapodaj kod ktory pokazuje na czym synchronizujesz i gdzie dostajesz illegal monitora, bez tego nikt nie bedzie raczej w stanie pomoc.

0

Pewnie ma metodę synchronizowaną

jeśli synchronizowana nie jest statyczna, to blokuje na obiekcie, do którego należy - czyli to tak jakbyś zrobił synchronized(this) - powinieneś zatem robić this.wait();
jeśli synchronizowana metoda jest statyczna, to blokuje na obiekcie reprezentującym klasę np synchronized(Dupa.class) - tyle mi pamięć mówi... piszcie miasta.

0
asczerwo napisał(a)

do testów, chodzi o to, że jeżeli potrzebujesz na bieżąco przetwarzać i wyświetlać wyniki to wątki szybciej działają(nie pytaj czemu) problem jest taki, że jeżeli chcę wait i notify to nie mogę wątku pętlić, a jedynie ew po kolei podpinać :) jak bym miał wielordzeniową\wieloprocesorową maszynę to nie było by to problemem:)

Co ma do tego liczba procesorów?
Na maszynie z 1 CPU też możesz mieć wiele działających jednocześnie wątków. Działają one wtedy w przeplocie. wait() nie zawiesi ci procesora.

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