public class RockPaperScissors implements Runnable { public static void main(String[] args) { new Thread(new RockPaperScissors()).start(); } @Override public void run() { Player p1 = new Player(), p2 = new Player(); Thread p1T = new Thread(p1), p2T = new Thread(p2); p1T.start(); p2T.start(); int p1Wins = 0, p2Wins = 0; for (int i = 0; i < 1000; i++) { int p1C, p2C; try { p1C = p1.getChoice(); p2C = p2.getChoice(); //System.out.println(Player.choiceToString(p1C) + " vs. " + Player.choiceToString(p2C)); } catch (InterruptedException e) { i--; // nicht reagieren; Runde wiederholen continue; } if (p1C == (p2C+1)%3) // 0 vs. 2, 1 vs. 0, 2 vs. 1 p1Wins++; else if ((p1C+1)%3 == p2C) // 0 vs. 1, 1 vs. 2, 2 vs. 0 p2Wins++; } p1T.interrupt(); p2T.interrupt(); try { // trotzdem joinen und auf Beendigung warten p1T.join(); p2T.join(); } catch (InterruptedException e) { } System.out.println("Gewinnübersicht:\n" + "Thread 1:\t" + p1Wins + "x\n" + "Thread 2:\t" + p2Wins + "x"); } }