类线程一致性

时间:2017-06-21 00:19:16

标签: java multithreading swing executorservice

作为一个项目的一部分,我目前正在研究我们(一些编码爱好者朋友),我们正在尝试制作一个相对简单的游戏。游戏是由几个较小的游戏组成,我们将分别编程,我的工作是将它们组合成一个frankensteined超级游戏。 其中一个迷你游戏包括一个"运输模拟器"。非常类似于蛙人;只是一条车道转向迷你游戏。我编程的朋友有14名摇摆工作人员完成任务,如产生迎面而来的汽车,道路动画和你的汽车。我遇到的问题是,当我打电话给这个班级时,所有的线程都不会启动。有些人在完成其他人之前不会激活,有些人会在其他人之后。我将摇摆工作者转移到了执行服务中,但仍然得到了类似的结果。同时运行的线程数是否有上限?摇摆工作者对这份工作是错误的吗?这对我来说非常困惑,因为我无法在失败的线程中看到任何一致性。似乎没有理由为什么有时他们会推出,而其他时候也没有。有什么建议? 这是构造函数

      travelGUI(Player playerIn) throws InterruptedException {

  ...

    //player is a object that contains a variable for each GUI
    //it is also a Parameter
    player = playerIn;

    player.mapGUI.setVisible(false);
    player.mapGUI.dispose();

    methodNewThread();//road display
    carThread();//Used to update the car in the game
    copShootThread();
    copShootThread();//Used to set up the bullet shoot thread that shoots at the car

    healthThread();
    bulletThread();
    copThread("1", 1, "1" + "p");
    copThread("2", 2, "2" + "p");
    copThread("3", 3, "3" + "p");
    copThread("4", 4, "4" + "p");

    //Creates the background animation for the road and the end conditions for the level
    intComponents();
}

其中一个主题的示例是           public static void healthThread(){//此线程用于更新玩家健康状况

    SwingWorker<Void, String> he;
    he = new SwingWorker<Void, String>() {

        @Override
        protected Void doInBackground() throws Exception {
            //code to be run in the new thread
            ...
            }
            return null;
        }

    };

    // he.execute();
    executorService.submit(he);
}

0 个答案:

没有答案