Po długiej przerwie znów potrzebuję Waszej pomocy... tym razem jest to Java. Nie chcę wrzucać kodu całego programu bo zajmuje ponad 400 wierszy dlatego wrzucą tylko jedną funkcję która zdaje się powodować "mulenie". Mianowicie robię symulator linii produkcyjnej są pojemniki na taśmie, tasma sie przesuwa i do kolejnych pojemników nalewana jest ciecz z zbiornika znajdującego się wyżej. W zbiorniczku wyżej jest jeszcze mieszadełko którego ruch symuluję poprzez zmniejszanie i zwiększanie szerokości dwóch elips leżących przy sobie (daje to wrażenie obracania się śmigła mieszadła). Zrobiłem kilka wątków jeden jest odpowiedzialny za przesuwanie pojemnikow na tasmie drugi za nalewanie cieczy i teraz chciałem dorobic watek odpowiedzialny za mieszanie jednak po dodaniu tej funkcji i wywołaniu jej kilkukrotnie w pętli wszystko zaczyna mulić... na ubuntu jeszcze w miarę ale na Viscie to totalna porażka.
Powiedzcie co robię źlę... z Javą dopiero zaczynam może źle robię wątki albo nie potrzebnie je tworzę? Poniżej funkcja obrotu mieszadła:
public void rotate(){
t = new Thread(){
@SuppressWarnings({"static-access", "empty-statement"})
@Override
public void run(){
while(semafor == false);
semafor = false;
for(int i = 0; i < 20 ; i++){
decWidth();
try {
sleep(25);
} catch (InterruptedException ex) {
Logger.getLogger(Mieszadelko.class.getName()).log(Level.SEVERE, null, ex);
}
}
for(int i = 0; i < 20 ; i++){
incWidth();
try {
sleep(25);
} catch (InterruptedException ex) {
Logger.getLogger(Mieszadelko.class.getName()).log(Level.SEVERE, null, ex);
}
}
semafor = true;
}
};
t.start();
}
Dodam jeszcze że dla pozostałych wątków tworzyłem klasy nazwane (nie anonimowe). Wątki tworze po to żeby zrobić efekt animacji... nie wiem czy dobrze się za to zabrałem.