Array von threads?

So, ich habe ein Problem zu verstehen, wie zu vermeiden sequentielle Ausführung der threads. Ich bin versucht, erstellen Sie ein array von threads und führen Sie die start() und join () - Funktionen in separaten Schleifen. Hier ist ein code Beispiel, was ich jetzt habe:

    private static int[] w;

static class wThreads implements Runnable {

        private final int i;

        public wThreads(int i) {
            this.i = i;
        }

        //Set member values to 1
        @Override
        public void run() {
            //doing specific stuff here
        }
    }

Und hier ist, wo die threads erstellt werden, in main:

int argSize = Integer.parseInt(args[0]);

    w = new int[argSize];

    //Initialize w
    for (int i = 0; i < argSize; i++) {
        wThreads wt = new wThreads(i);
        for (int j = 0; j < argSize - 1; j++) {
            Thread t = new Thread(wt);
            t.start();
            try {
                t.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

Also scheinbar ist dies nicht ein Beispiel von threads parallel arbeiten. Sie warten darauf, sich gegenseitig fertig zu machen. Ich weiß, dass der join () - und start() aufruft, sollte in verschiedenen Schleifen, aber wie kann ich mich auf den thread in einer anderen Schleife als der es ursprünglich erstellt?

Muss ich ein array erstellen des threads in die Deklaration der Klasse? Sollen die Schleifen sein, die gab es auch, und außerhalb der main?

Bin ich sehr verwirrt und jede info würde geschätzt. Danke!

Ich denke, du bist auf dem richtigen Weg. Sie können das array erstellen des threads (oder eine Liste von threads, sogar) überall außerhalb des for Schleife.
Ja, sammeln Sie Sie in einem array. Oder verwenden Sie einen ExecutorService und awaitTermination().

InformationsquelleAutor Syrne | 2014-10-24

Schreibe einen Kommentar