GUI: einfrieren verhindern!

Hallo Leute,

hier mal mein Code:

public void doGameLogic(int cellID) {
		final ModelGameState actualGameState = getActualGameState();
		final ModelCoinState actualCoinState = (actualGameState.getPlayersTurn() == ModelConstants.PLAYER_ONE_ID? actualGameState.getCoinsPlayerOne() : actualGameState.getCoinsPlayerTwo());
		final List<ModelCoinState> temp = MoveCalculator.getMoves(actualCoinState, cellID);
		final CountDownLatch lock = new CountDownLatch(temp.size());
		int time = 500;
		
		for(int i = 0; i < temp.size(); i++) {
			final int index = i;
			
			Timer timer = new Timer(time, new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if(actualGameState.getPlayersTurn() == ModelConstants.PLAYER_ONE_ID) {
						actualGameState.setCoinsPlayerOne(temp.get(index));
					} else {
						actualGameState.setCoinsPlayerTwo(temp.get(index));
					}

					setActualGameState(new ModelGameState(actualGameState));
					
					lock.countDown();
				}
			});
			
			timer.setRepeats(false);
			timer.start();
			
			time += 500;
		}

		try {
			lock.await();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		if(!(actualCoinState.getCoinList().get(MoveCalculator.lastIndex) < 2)) {
			doGameLogic(MoveCalculator.lastIndex);
		}
	}

Natürlich friert hier der Screen ein, weil das lock.await() auf dem EDT ausgeführt wird.
Ich habe aber leider keine Ahnung, wie ich das jetzt verhindern kann.

Kann mir da einer weiterhelfen?

setActualGameState aktualisiert hier die GUI

Habs, Danke!

Lösche diesen Countdownlatch und führe die Aktion,
die nach den Timern stattfinden soll einfach in der
letzten Timer-Action aus :smiley: