2012-03-29 6 views
4

Ich habe ein Objekt namens OBJ, das Runnable implementiert. Es hat ein paar Mitglieder, einen Konstruktor, eine run() -Methode und einen Getter für eine bestimmte Anzahl (eines der Mitglieder). In meiner Hauptmethode habe ich eine Reihe von Threads, die jeder Thread ist ein new OBJ, und die jede, in der run() Methode, eine bestimmte Berechnung und speichert es in seiner Zählung.Wie erreicht man eine Methode eines Objekts, das Runnable in Java implementiert?

Jetzt möchte ich eine andere Schleife haben (außer der Schleife, mit der ich alle meine Threads gestartet habe), und für jeden Thread warten, bis sie beendet ist, und dann Count Getter verwenden, um alle Zählungen zu summieren. hab aus den Threads geholt.

Wie kann ich den Getter durch die Threads erreichen?

Antwort

2

Nun, Ihre OBJ-Instanzen erstellen, bevor Sie die Fäden Schleife erreichen:

List<OBJ> objects = new ArrayList<OBJ>(); 
// Create your objects here 
for (int i = 0; i < NUM_OF_OBJ; ++i) { 
    objects.add(new OBJ()); 
} 

// Run the threads 
List<Thread> threads = new ArrayList<Thread>(); 
for (int i = 0; i < NUM_OF_OBJ; ++i) { 
    Thread t = new Thread(objects.get(i)); 
    threads.add(t); 
    t.start(); 
} 

// Wait for the threads to finish 
for (Thread t : threads) { 
    t.join(); 
} 

// Sum all counts 
int sum = 0; 
for (OBJ object : objects) { 
    sum += object.getCount(); 
} 
+0

Brilliant !!!!!!!!!!!! Danke :) :) :) – MichBoy

+0

@gorashc Sorry, verpasste das. Beeindruckend. Eine schreckliche Antwort und ein falscher Kommentar. Nicht mein bester Moment. – Gray

+2

Happens zum besten @Gray – MichBoy

3

Der beste Weg zu erreichen wäre, einen ExecutorService (siehe java.util.concurrent) mit Callables zu verwenden, von dem Sie die Futures erhalten können.

Verwandte Themen