ベンジャミン・バネルジー:
私はゲームを作成しようとしていますし、私のスレッドを実行するために、私が選択した道で奇妙な問題に遭遇してきました
私はそれがセットアップされている方法は、各関連クラスが持っているということであるThread
のオブジェクト、run()
関数は一度コードを実行します。それぞれは、フレームごとに一度と呼ばれています。
しかし、いつでも私は私が手のコードを実行しようjava.lang.IllegalThreadStateException
と、私はなぜ見当もつかない。
ここで問題のあるコードの適応です:
public class Test {
public static void main(String[] args) {
while(true) {
ThreadA.run(args);
ThreadB.run(args);
}
}
private static class ThreadA {
private static Thread thread = new Thread() {
@Override
public void run() {
System.out.println("A");
}
};
public static void run(String[] args) {
thread.start();
}
}
private static class ThreadB {
private static Thread thread = new Thread() {
@Override
public void run() {
System.out.println("B");
}
};
public static void run(String[] args) {
thread.start();
}
}
}
ドラッグトークン:
問題はここにあります:
while(true) {
ThreadA.run(args);
ThreadB.run(args);
}
無限にこれがループ。それが完了した場合であっても-複数回のスレッドを開始するために法的なことはありません。thread.isAlive()
ここであなたを助けにはなりません-あなたは再びそれを実行したい場合は、新しいインスタンスを作成します。