多线程 - 使线程轮流执行

时间:2017-11-21 16:49:11

标签: java

我目前正致力于一个使用线程作为玩家并且可以创建n个玩家的多线程游戏,因此同步必须非常好。我的玩家在他们的手牌总和不等于100时执行功能。如果是线程更改变量game on为假,则停止游戏。

public void run(){                                                                         
while(gameOn) {                                                                        
    takeHand();                                                                        
    while (sum() != 100 && !isInterrupted()) {                                         
        discardPebble();                                                               
        drawnPebble();                                                                 
        System.out.println(sum() + " "+ hand.toString() + currentThread().getName());  
        try {                                                                          
            Thread.sleep(100);                                                         
        } catch (InterruptedException b) {                                             
            System.out.println("We have a winner!");                                   

        }                                                                              
    }                                                                                  
    StopGame();                                                                        
}                                                                                      
b.close(); // closing output stream to the file

正如您所看到的,每个线程都会执行discardPebble()和drawnPebble(),但它们不会同步。它们也会在不同的时间启动,因此第一个线程执行run()而另一个Thread尚未启动。我如何让它们同时启动并等待所有线程完成discardPebble()和drawnPebble()然后重新开始?我昨天读过有关CountDownLatches的内容,但我并不了解如何在我的情况下使用它们,但我相信它可以解决我的问题。

0 个答案:

没有答案