DerMartin007
Grünschnabel
Hallo alle zusammen,
ich habe mir hier schon die Bereiche über Threads angesehen und auch schon einiges daraus umgesetzt. Nun habe ich aber das Problem das ich keine extra Klasse für die call() Methode benutzen möchte. Sondern gerne alles in einer Klasse abhandeln möchte. Mein eigentliches Problem ist hier nun die Parameter Übergabe vom Main Thread in den Sub Thread.
Ich habe eine ArraList<Object>. Hiermit möchte ich nun für jedes Object aus der Liste, jeweils in einem extra Thread, parallel einige operationen ausführen und das Ergebnis zurück in den Main Thread übergeben.
Hier nun der Auszug aus meinem Programm:
ArrayList<Object> objectList = new ArrayList<Object>();
// Erstellung der ArrayListe ...
ArrayList<Callable> taskList = new ArrayList<Callable>();
for ( int i = 0; i<objectList.size(); i++ ) {
Callable<Boolean> c = new Callable<Boolean>() {
Object param;
public Boolean call() throws Exception {
Boolean result = new Boolean(false);
System.out.println("started Thread: " + Thread.currentThread().getId() );
//something to do with one Object from the objectList ...
System.out.println( Thread.currentThread().getId() + " - param = " + param );
System.out.println("finished Thread: " + Thread.currentThread().getId() );
return result;
}
};
taskList.add( c );
};
ExecutorService executorService = Executors.newCachedThreadPool();
try {
List<Future<Boolean>> taskResultList = executorService.invokeAll( taskList );
} catch ( Exception e) {
e.printStackTrace();
}
Wie bekomme ich nun die Membervariable param mit einem Object aus meiner objectList gefüllt
Im voraus schon mal vielen Dank.
ich habe mir hier schon die Bereiche über Threads angesehen und auch schon einiges daraus umgesetzt. Nun habe ich aber das Problem das ich keine extra Klasse für die call() Methode benutzen möchte. Sondern gerne alles in einer Klasse abhandeln möchte. Mein eigentliches Problem ist hier nun die Parameter Übergabe vom Main Thread in den Sub Thread.
Ich habe eine ArraList<Object>. Hiermit möchte ich nun für jedes Object aus der Liste, jeweils in einem extra Thread, parallel einige operationen ausführen und das Ergebnis zurück in den Main Thread übergeben.
Hier nun der Auszug aus meinem Programm:
ArrayList<Object> objectList = new ArrayList<Object>();
// Erstellung der ArrayListe ...
ArrayList<Callable> taskList = new ArrayList<Callable>();
for ( int i = 0; i<objectList.size(); i++ ) {
Callable<Boolean> c = new Callable<Boolean>() {
Object param;
public Boolean call() throws Exception {
Boolean result = new Boolean(false);
System.out.println("started Thread: " + Thread.currentThread().getId() );
//something to do with one Object from the objectList ...
System.out.println( Thread.currentThread().getId() + " - param = " + param );
System.out.println("finished Thread: " + Thread.currentThread().getId() );
return result;
}
};
taskList.add( c );
};
ExecutorService executorService = Executors.newCachedThreadPool();
try {
List<Future<Boolean>> taskResultList = executorService.invokeAll( taskList );
} catch ( Exception e) {
e.printStackTrace();
}
Wie bekomme ich nun die Membervariable param mit einem Object aus meiner objectList gefüllt
Im voraus schon mal vielen Dank.