2016-05-15 18 views
1

我的程序是一個Java遊戲,它涉及輪到用戶和AI之間。因此,在所有的操作完成後,我有一個無限的while循環,只有在轉彎發生變化後纔會斷開。我只使用無限循環,因爲我正在使用計時器,無法預測用戶什麼時候輪到他們。但我注意到,隨着時間的推移,我的程序變慢,甚至點擊按鈕也沒有效果。這是我的循環是造成這種情況嗎?幫助將不勝感激。程序運行速度慢,性能下降

while(true) { 
    if(playerTurn % 2 == 1) { 
     artificialIntelligence(); 
     break; 
    } 
} 
+1

嘗試在while循環結束之前添加'Thread.sleep(10);'。 –

+0

你的循環中沒有任何東西對我們有任何用處。 – shmosel

回答

1

如果你使用無限循環(while循環),這個操作會連續執行;從而減慢你的應用程序。因此,我建議在兩個線程中打破代碼。使用一個線程來檢查用戶轉向事件,並使用另一個線程來做AI的東西。一旦用戶事件發生,請停止此線程並執行必要的操作。
這樣你的代碼在任何時候都不會被阻塞;從而導致更好的性能。

1

沒有更多的代碼,很難確定問題的真正原因是什麼。然而,有一個嫌疑犯可能是你持有對象引用,並且他們沒有被垃圾回收回收。嘗試使用java分析器,它可以幫助您確定問題可能出現的位置。