Try to squash a lot of threading bugs in Game:
- Make players and roundPlayers be sychronizedLists. Remove all synchronizations on those except while iterating. (Just to reduce code clutter, since the lists still do the same thing internally). - Rework some other code to reduce locking complexity. - In skipIdleJudge, apparently getJudge() can return null. I have seen an exception because of this, so I make it check for that. Not entirely sure how that would happen in the first place. - DEADLOCK FIX: Move getPlayerForUser() call outside of synchronized (playedCards) block in getWhiteCards().
- Loading branch information
- +142 −141 src/net/socialgamer/cah/data/Game.java