Java 如何在分配的运行时中分别终止所有线程

Java 如何在分配的运行时中分别终止所有线程,java,multithreading,Java,Multithreading,我有一个程序,询问要创建多少恶棍对象。然后,它创建后续线程,这些线程在被终止之前运行随机数目的ms。程序当前正确地创建线程,但是只有创建的最后一个线程被终止。如何修改代码,以便在分配每个线程的随机时间内杀死所有线程 我尝试在for循环中移动try/catch声明。当所有线程都被创建和终止时,它一个接一个地这样做;例如,下一个线程是在前一个线程被终止后才创建的,这会破坏目的 Villian villian = null; Random randomVillian = new Ran

我有一个程序,询问要创建多少恶棍对象。然后,它创建后续线程,这些线程在被终止之前运行随机数目的ms。程序当前正确地创建线程,但是只有创建的最后一个线程被终止。如何修改代码,以便在分配每个线程的随机时间内杀死所有线程

我尝试在for循环中移动try/catch声明。当所有线程都被创建和终止时,它一个接一个地这样做;例如,下一个线程是在前一个线程被终止后才创建的,这会破坏目的

    Villian villian = null;
    Random randomVillian = new Random();

    @SuppressWarnings("resource")
    Scanner input = new Scanner(System.in);

    System.out.println("How many villians would you like to create?");

    int amountOfVillians = input.nextInt();

    int time;

    Random threadTime = new Random();

    time = threadTime.nextInt(10000);

    if (amountOfVillians < 7) {

        for (int x = 0; x < amountOfVillians; x++) {

            int randomGenerator = randomVillian.nextInt(6);

                for (int i = 0; i < 5; i++) {

                    if (randomGenerator == 0 ) {

                        villian = new FlyingVillian();
                    }

                    else if (randomGenerator == 1) {

                        villian = new StrongVillian();
                    }

                    else if (randomGenerator == 2) {

                        villian = new FastVillian();
                    }

                    else if (randomGenerator == 3) {

                        villian = new SmartVillian();
                    }

                    else if (randomGenerator == 4) {

                        villian = new FireVillian();
                    }

                    else if (randomGenerator == 5) {

                        villian = new IceVillian();
                    }

                        try {

                            writeToFile(villian);
                        }
                        catch (IOException e) {

                            System.out.println(e.getMessage());
                        }
                    }

                VillianThreads temp = new VillianThreads(villian);
                temp.start();
                System.out.println(villian.getName() + " has entered the battlefield!");

                }

            try {
                Thread.sleep(time);
                System.out.println(villian.getName() + " has escaped!");

                } catch (InterruptedException e) {

                e.printStackTrace();
                }
            }

    else {

            System.out.println("Please enter a value of less than 7");
    }
}
Villian-Villian=null;
Random randomVillian=新随机数();
@抑制警告(“资源”)
扫描仪输入=新扫描仪(System.in);
System.out.println(“您希望创建多少Villian?”);
int amountOfVillians=input.nextInt();
整数时间;
随机线程时间=新随机();
时间=线程时间.nextInt(10000);
如果(阿蒙特菲利安人<7){
对于(int x=0;x
您需要将时间传递到线程的可运行状态,这里是Villian对象,并让它在时间结束后杀死“自身”。我已经这样做了,但是Villian对象正在一个接一个地被创建和杀死,这就是问题所在。我希望它们同时被创建,并在随机时间内被杀死。当然,是的,因为您正在调用调用代码中的
Thread.sleep
,这是一行阻止调用代码的代码。如果您不想阻止此代码,请不要这样做。