Autore Topic: Semafori e intent  (Letto 652 volte)

Offline Nicolò

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
Semafori e intent
« il: 18 Aprile 2011, 12:12:06 CEST »
0
Ciao ragazzi, ho una domanda da porvi. Ve la faccio semplice: in pratica ho degli elementi su una lista che è in continuo aggiornamento, quindi possono arrivare elementi da aggiungere in un qualsiasi momento. Questa lista deve essere letta non appena il primo elelmento è arrivato e saprò che ci saranno altri elememti da leggere nella lista solo dopo che un broadcast receiver avrà elaborato l'elemento i-esimo della lista e, cosa più importante, ogni elemento deve essere letto uno per volta (come accade in una semplice lista) . Quindi non è un semplice ciclo While o For che scorre la lista, perchè il prossimo elemento da elaborare potrà essere elaborato solo dopo l'uscita dal broadcast receiver (staccato dal metodo in cui eseguirei il ciclo for).
Io ho usato questa soluzione: ho messo un semaforo che aspetta l'uscita dal broadcast receiver per ricominciare a scorrere la lista. In effetti forse si potrebbe fare la stessa cosa con gli intent, ma in questo caso dovrei lanciare un intent ogni volta che l'elemento i-esimo ha finito di essere processato e se ci sono 100 elementi nella lista dovrei lanciare 100 intent, uno alla volta. Secondo voi, da punto di vista dell'ottimizzazione del codice e delle risorse, quale soluzione è la migliore?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Semafori e intent
« Risposta #1 il: 18 Aprile 2011, 12:18:27 CEST »
+1
Hai valutato l'idea di usare una BlockingQueue?


BlockingQueue (Java Platform SE 6)

Offline Nicolò

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
Re:Semafori e intent
« Risposta #2 il: 18 Aprile 2011, 13:48:44 CEST »
0
La stavo appena valutando:-), ma non capisco una cosa, i metodi di questa classe sono già implementati o me li devo implementare io???

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Semafori e intent
« Risposta #3 il: 18 Aprile 2011, 14:19:38 CEST »
0
Sono già implementati, ovviamente :D

Offline Nicolò

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
Re:Semafori e intent
« Risposta #4 il: 18 Aprile 2011, 14:41:10 CEST »
0
Ok, funzionano perfettamente, ma dimmi un pò, a livello di risorse come siamo combinati? Secondo te quale metodo mi conviene scegliere?? In pratica io creo una coda bloccante di un elemento e cancello questo elemento solo quando ha finito di essere processato, cosi in questo modo evito di bloccare lo scorrimento della lista, però blocco la scrittura, secondo te è meglio così o con i semafori? Supponi di creare 5 oggetti e inserirli su una lista non bloccante,  poi li scorri ad uno ad uno con un semaforo, secondo te è la stessa cosa di creare 5 oggetti, inserirli ad uno ad uno su una lista e servirli OVVIAMENTE ad uno ad uno?Quale è la migliore soluzione?