PDA

View Full Version : Java MultiThreading


peppedx
30-11-2004, 08:33
Dunque vi volevo sottoporre un problema pratico e la soluzione che ho adottato per capire se qualcuno di voi può suggerirmi qualcosa di meglio.

Ho una elaborazione da eseguire che è compostra da n Thread (uguali) il cui numero è conosciuto solo a runtime. Per poter eseguire il passo successivo è necessari che tutti gli n thread abbiano finito il compito (in particolare ogni thread effettua delle comunicazioni via rete).

Il modo che ho utilizzato è stato questo: Dato il compito da eseguire nella classe chiamata "DiscoverTranscodeService" ho creato un membrio (intero) di questa classe chiamato pings, ho creato una classe interna che incapsula il thread. Al momento di dover utilizzare questi thread, conosciuto il loro numero ho posto un intero target uguale a questo numero e fatto si che ogni thread finita l'elaborazione incrementasse pings.
Il thread principale controlla ogni 500msec. pings: se pings==target allora vado avanti.

Questo metodo funziona...però non mi pare sia il massimo di pulizia ed eleganza...Come risolvete voi problemi di questo tipo?

Saluti!

Angus
30-11-2004, 08:50
dai un occhio alla classe java.lang.ThreadGroup e al suo metodo activeCount(). Inoltre ti segnalo il metodo yield() della classe java.lang.Thread. Se invece vuoi provare ad usare Tiger (l'ultima versione di Java SE), c'è un package nuovo di pacca per gestire più ad alto livello questo tipo di problemi.