我在繪畫方面遇到了一些沉重的優化問題。我的代碼示例如下所示:優化:繪畫同步
BufferedImage img1;
synchronized(game.players){
synchronized(game.monsters){
synchronized(game.playersHealth){
synchronized(game.monstersHealth){
synchronized(game.overlays){
synchronized(game.projectiles){
img1 = game.drawAll();
}
}
}
}
}
}
game.setImage(img1);
game.repaint();
我知道這對大多數人來說可能看起來很可怕。問題是,我有多個包含數據的不同對象集合(玩家,怪物等),並且這個代碼塊^在一個單獨線程的'無限'循環中運行,該線程組織所有圖像,然後告訴遊戲再次繪畫自己。我需要幫助。你們能否指引我朝正確的方向做正確的事情?
噢,我的....也許同步上課?也許用'Thread.yield()'? – jn1kk 2013-04-30 20:59:02
程序中使用了其他什麼鎖定順序?例如,一段代碼是否曾經同步過'game.projectiles'而沒有先鎖定'overlays','monstersHealth'等?如果沒有,那麼將所有這些混亂集中到一個鎖中。 – 2013-04-30 20:59:45
是的,還有代碼的其他部分只與一個或兩個字段同步。但是,如果我只想訪問投射物或其他東西,那麼與所有字段同步效率會不會更低? – Blackvein 2013-04-30 21:03:09