Witam.
Pisze prostą gierkę obecnie mam pewien obiekt reprezentujący gracza (można się nim poruszać za pomocą strzałek). Wciśnięcie spacji powoduje coś na styl strzału, jeżeli klawisz spacji jest trzymany to tworzone są kolejne pociski. Obiekty pocisków trzymane są w tablicy. Pocisk zawiera informacje o swoim położeniu tak samo jest z obiektem gracza.
Niestety ale im więcej pocisków w tablicy tym animacja coraz bardziej zwalnia, mam coś takiego

 
public class MainCanvas extends Canvas implements KeyListener {
...
public void paint(Graphics g){
...
for(Bullet bullet : getBullets()){
bullet.drow(g);
...
}
...
}

aktualizacja położenia pocisku została przeniesiona do osobnego wątku.
Zakładam, że całe to spowolnienie wynika z tego, że wątek który wywołuje metodę paint(Grapchic g) jest opóźniany przez pętlę rysującą pociski i im więcej pocisków tym większe spowolnienie animacji (dłuższe wykonanie pętli).

Chciałbym przenieść kod odpowiedzialny za rysowanie pocisków do wątku aktualizującego jego położenie i tak w sumie zrobiłem niestety pojawia się problem z migotaniem animacji pocisku.
Normalnie animacja pocisku nie migocze używam podwójnego buforowania.

I tu prosiłbym o pomoc lub jakieś przykłady jak poprawić tą animację, którą chcę rysować w oddzielnym wątku. Domyślam się, że problem jest w obiekcie Graphics pomimo, że do wątku rysującego pocisk przekazuję obiekt Canvas (w którym to odbywa się całe rysowanie) a z niego pobieram obiekt Graphics.

 
public class BulletMovement implements Runnable {
...
public void run() {
		while(true) {
			try {
				for(Bullet bullet : getBullets()){
					bullet.update();
					Thread.sleep(10);
					bullet.drow(parent.getGraphics());
				}
				Thread.sleep(1);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
...
}

Dodam jeszcze, że obiekt gracza jak i pocisk są obrazkami typu GIF a animacja odbywa się w klasie która dziedziczy po java.awt.Canvas (czyli uniwersalnie bo obiekt ten dorzucam sobie do JAppleta i JFrame).