我創建新線程並啓動它。它的運行方法有以下代碼:For循環在多線程中無法正常工作
for (int a=0; a<10; a++) {
System.out.println(a);
Thread.sleep(10);
}
而我得到的是:
0 0 1 1 2 0 2 3 1 0 3 4 2 1 0 4 5 3 2 1 0 5 6 4
...等等。爲什麼我沒有得到1 2 3 4 5 6 7 8 9
?什麼原因?
編輯:
線程代碼:在那裏每15ms的其他線程創建
private class WarpEnemyRnn implements Runnable {
private WarpEnemy enemy;
public WarpEnemyRnn(WarpEnemy enemy) {
this.enemy = enemy;
}
@Override
public void run() {
try {
for (int a=0; a<8; a++) {
System.out.println(a);
enemy.subOpacity();
Thread.sleep(refreshRate);
}
Point2D warpPoint = enemy.warp();
enemy.setX((int) warpPoint.getX());
enemy.setY((int) warpPoint.getY());
enemy.resetWarpCooldown();
for (int a=0; a<8; a++) {
enemy.addOpacity();
Thread.sleep(refreshRate);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
新線程。只有在某些條件同意時才創建。
沒有顯示您的代碼的多線程部分,您將無法獲得具體的答案。但似乎你正在開始幾個交叉執行的線程。 – assylias 2013-02-17 12:12:24
你能展示更多的代碼嗎?特別是你創建你的線程的地方,以及這個for循環的地方是什麼? – 2013-02-17 12:12:39
是的等一下 – user2080377 2013-02-17 12:13:40