As my title states, i need to nest for loops (i am not sure if nesting is the right word i am looking for, but i need one for loop, inside the other)
The current code i have is
public class Main {
private static String[] passwords = {"zero", "one", "two", "three", "four"};
public static void main(String[] args) {
int threadds = 10;
Thread[] threads = new Thread[threadds];
for (int j = 0; j < passwords.length; j++) {
for (int i = 0; i < passwords.length; i++) {
ClaimSnipe NS = new ClaimSnipe();
NS.password = String.valueOf(i);
NS.i = i;
NS.DropTome = System.currentTimeMillis() + 1000;
Thread t = new Thread(NS);
threads[i] = t;
threads[i].setName(String.valueOf(i + 1));
NS.ThreadName = String.valueOf(threads[i].getName());
threads[i].start();
}
}
}
}
class ClaimSnipe implements Runnable {
private volatile boolean exit = false;
public String ThreadName;
public String password;
public int i;
public long DropTome;
public void stop() {
exit = true;
}
@Override
public void run() {
long unixTimern = System.currentTimeMillis();
while (unixTimern < (DropTome) - 1000) {
unixTimern = System.currentTimeMillis();
}
System.out.println("Thread = " + ThreadName + "; i = " + i);
stop();
}
}
The result it gives is
Thread = 0; i = 0
Thread = 0; i = 1
Thread = 0; i = 2
Thread = 0; i = 3
Thread = 0; i = 4
Thread = 1; i = 0
Thread = 1; i = 1
Thread = 1; i = 2
Thread = 1; i = 3
Thread = 1; i = 4
Thread = 2; i = 0
Thread = 2; i = 1
Thread = 2; i = 2
Thread = 2; i = 3
Thread = 2; i = 4
Thread = 3; i = 0
Thread = 3; i = 1
Thread = 3; i = 2
Thread = 3; i = 3
Thread = 3; i = 4
Thread = 4; i = 0
Thread = 4; i = 1
Thread = 4; i = 2
Thread = 4; i = 3
Thread = 4; i = 4
Process finished with exit code 0
^^^ What i want
-----------------------------------------------------
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 3; i = 2
Process finished with exit code 1
^^^ What i get...
Thread = 0; i = 0
Thread = 0; i = 1
Thread = 0; i = 2
Thread = 0; i = 3
Thread = 0; i = 4
Thread = 1; i = 0
Thread = 1; i = 1
Thread = 1; i = 2
Thread = 1; i = 3
Thread = 1; i = 4
Thread = 2; i = 0
Thread = 2; i = 1
Thread = 2; i = 2
Thread = 2; i = 3
Thread = 2; i = 4
Thread = 3; i = 0
Thread = 3; i = 1
Thread = 3; i = 2
Thread = 3; i = 3
Thread = 3; i = 4
Thread = 4; i = 0
Thread = 4; i = 1
Thread = 4; i = 2
Thread = 4; i = 3
Thread = 4; i = 4
Process finished with exit code 0
^^^ What i want
-----------------------------------------------------
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 3; i = 2
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 1; i = 0
Thread = 2; i = 1
Thread = 4; i = 3
Thread = 5; i = 4
Thread = 3; i = 2
Process finished with exit code 1
^^^ What i get...
I have tried changing where i call the ClaimSnipe NS but all that did was make it so only one thread was used
Your line 14 threads[i].setName(String.valueOf(i + 1));
should be:
threads[i].setName(String.valueOf(j));
This change will align your existing code to get your desired output. I hope this does the trick for you.