faretesto > comp.lang.* > comp.java

dashk (22.11.2006, 15:41)
ciao a tutti!
ho un arraylist di bean e devo lanciare un thread per ogni bean... il
problema è che il numero di questi bean è sull'ordine delle migliaia...
quindi pensavo di mandare in esecuzione un numero ristretto di thread e
far si che in esecuzione ci sia sempre lo stesso numero di thread, ciò
vuol dire che quando un thread termina ne deve partire subito un'altro...
come posso fare? dove posso trovare qualche esempio?
Gian Uberto Lauri (22.11.2006, 16:06)
>>>>> Long count = 12.19.13.14.19; tzolkin = 6 Cauac; haab = 12 Ceh.
>>>>> I get words from the Allmighty Great Gnus that
>>>>> "d" == dashk <qw> writes:


d> ciao a tutti!
d> ho un arraylist di bean e devo lanciare un thread per ogni bean... il
d> problema è che il numero di questi bean è sull'ordine delle migliaia...

Ti fai un bel metodo sincronizzato che estragga i bean dalla lista uno
alla volta, poi un certo numero di thread che eseguono questo codice:

- Chieddi un bean al metodo sincronizzato, se non ci sono altri bean termina.
- Richiama il metodo da eseguire del bean
- ripeti
pole (22.11.2006, 16:20)
dashk wrote:
> quindi pensavo di mandare in esecuzione un numero ristretto di thread e
> far si che in esecuzione ci sia sempre lo stesso numero di thread, ciò
> vuol dire che quando un thread termina ne deve partire subito un'altro...
> come posso fare? dove posso trovare qualche esempio?


Se usi JDK > 5 il fixed thread pool fa al caso tuo:



pole
pole (22.11.2006, 16:25)
pole wrote:

> Se usi JDK > 5


Intendevo >= 5 :-P

pole
dashk (22.11.2006, 16:42)
> Ti fai un bel metodo sincronizzato che estragga i bean dalla lista uno
> alla volta, poi un certo numero di thread che eseguono questo codice:


> - Chieddi un bean al metodo sincronizzato, se non ci sono altri bean termina.
> - Richiama il metodo da eseguire del bean
> - ripeti


potresti essere più chiaro per favore?
dashk (22.11.2006, 16:43)
pole ha scritto:

> dashk wrote:
> > quindi pensavo di mandare in esecuzione un numero ristretto di thread e
> > far si che in esecuzione ci sia sempre lo stesso numero di thread, ciò
> > vuol dire che quando un thread termina ne deve partire subito un'altro...
> > come posso fare? dove posso trovare qualche esempio?


> Se usi JDK > 5 il fixed thread pool fa al caso tuo:


>


> pole


magari... siamo ancora all'1.4
Gian Uberto Lauri (22.11.2006, 17:01)
>>>>> Long count = 12.19.13.14.19; tzolkin = 6 Cauac; haab = 12 Ceh.
>>>>> I get words from the Allmighty Great Gnus that
>>>>> "d" == dashk <qw> writes:


>> Ti fai un bel metodo sincronizzato che estragga i bean dalla lista
>> uno alla volta, poi un certo numero di thread che eseguono questo
>> codice:


>> - Chieddi un bean al metodo sincronizzato, se non ci sono altri
>> bean termina. - Richiama il metodo da eseguire del bean - ripeti


d> potresti essere più chiaro per favore?

I tuoi thread devono "presentarsi da un distributore di bean", devono
richiedere a questo distributore un bean; se il distributore non
ritorna alcun bean (finiti) il thread muore.

Quando un thread ottiene un bean fa quello che deve fare, poi invece
di morire torna a chiedere il bean al distributore di bean.

E questo fintanto che tutti i thread muoino perché il distributore è
vuoto.
emmeesse (23.11.2006, 00:21)
dashk ha scritto:

> ho un arraylist di bean e devo lanciare un thread per ogni bean...


Per fare cosa?
Discussioni simili