|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Messaggi: n/a
|
[JAVA] benefici dei thread
Ciao a tutti,
vorrei farvi una domanda sui Threads. In questi giorni stiamo sviluppando un'applicazione Java che avrà il compito di caricare da DB una serie di profili (record) come set di dati che poi verranno inviati ad un WebService uno ad uno per essere elaborati ed ottenere in risposta un risultato calcolato. es: A1-B1-c1 -> WS -> R1 A2-B2-c3 -> WS -> R2 A3-B3-c3 -> WS -> R3 Siccome i profili (record) sono molti (5000) ed il WS ci metterà circa un 30 secondi per ogni risposta, il mio capo progetto ha suggerito il fatto che useremo, molto probabilmente, i Thread. Ora, io ho poco dimestichezza coi thread (anche se sò cosa sono e come si utilizzano), perciò volevo chiedere quali possono essere, in questo caso, i benefici dell'utilizzare i thread. Grazie in anticipo. |
|
|
|
#2 |
|
Member
Iscritto dal: Jun 2008
Città: Torino
Messaggi: 118
|
suddivisione del lavoro. suddivisione dei compiti del sw tra i thread in modo da svolgere più operazioni allo stesso tempo.
__________________
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Dalla tua spiegazione dello scenario, dubito si intendesse lato applicazione che si interfaccia con il database locale, dato che il collo di bottiglia sembra essere il web service che impiega 30 sec. a elaborare una singola risposta, o sbaglio?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#4 | |
|
Messaggi: n/a
|
Quote:
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
La questione allora dovrebbe riguardare una modifica del Web Service?
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 24-02-2011 alle 20:40. |
|
|
|
|
|
|
#6 | |
|
Messaggi: n/a
|
Quote:
Es: -Applicazione client - select N profili from table (es: 5) - ciclo sui 5 profili presi - apro 1 thread per ciascuno di essi - all'interno del thread utilizzo lo Stub per chiamare il WS. Ma la mia, al momento è solo un'ipotesi, oggi dovrei chiarire meglio. Il WS è comunque nostro quindi eventuali modifiche si posso sempre fare ma, ripeto, credo che intendesse come quanto riportato sopra. |
|
|
|
|
#7 | |||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Allora il WS già acetta e processa richieste multiple; è il client che ne spedisce una e attende la risposta in modo sincrono, quando invece potrebbe spedirne varie contemporaneamente. Che è quello che dovrete fare. Quindi invece di essere: Quote:
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 25-02-2011 alle 12:59. |
|||
|
|
|
|
|
#8 | |
|
Messaggi: n/a
|
Quote:
Il dubbio era legato all'uso delle risorse lato WS, mi spiego: // PROCEDURA SEQUENZIALE Se devo fare un ciclo su 2 record ed invocare per entrambi il WS che ci impiega 30 secondi l'uno, vuole dire che avrò completato la mia procedura in 60 secondi giusto? // PROCEDURA A THREAD Utilizzando invece 2 thread separati sull'applicazione client (due invocazioni contemporanee quindi) chi mi dice che il WS ci mette sempre 30 secondi ad ogni elaborazione? Nel caso così fosse io avrò completato la stessa procedura nella metà del tempo visto che avrò le 2 risposte entrambe dopo 30 sec. Il dubbio nasce dal fatto che, se io "bombardo il WS" di richieste simultanee (thread sul client) il WS non dovrebbe ridurre notevolmente la sua capacità elaborativa e quindi impiegare più tempo per ogni risposta? Grazie ancora. |
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Io la vedo così. Il client spedisce più richieste "in parallelo" al WS, con diversi thread. Lato WS ci sarà il classico thread pool che riceve le richeste e le processa con i vari thread a disposizione. Un thread pool è configurabile in base alle esigenze (vedi package java.concurrent). Naturalmente bisogna che il WS si strutturato in modo che il processo "calcolone da 30 sec" possa essere svolto da più thread contemporaneamente. Se il calcolone usasse anche una sola risorsa che non può essere condivisa ma deve essere usata in modo esclusivo per tutto il tempo, ciao ciao. Spero di non aver postato boiate
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#10 | |
|
Messaggi: n/a
|
Quote:
Vi farò sapere. |
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:17.




















