最初に私はこれをしました:
public SpaceCanvas(){
new Thread(new Runnable () {//this is the thread that triggers updates, no kidding
int fcount = 0;
@Override
public void run() {
System.out.println("Update thread started!");
while(!Thread.interrupted()){
fcount++;
while(players.iterator().hasNext()){
players.iterator().next().update(fcount);
}
while(entities.iterator().hasNext()){
entities.iterator().next().update(fcount);
}
System.out.println("About to paint");
repaint();
System.out.println("Done with paints");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
players.add(new LocalPlayer(0, 9001, 0, 0, 0, 0, this, null));
}
私が SpaceCanvas と呼ぶもののイニシャライザで。ただし、スレッドは実際には非同期で実行されないため、キャンバス、つまりその中にあるアプレットを作成することはできません。次に、「.start()」を「.run()」に置き換えたところ、スレッドは 1 回だけ実行されましたが、SpaceCanvas は完全に初期化されました。
私は何を間違えましたか、どうすれば修正できますか?