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