accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

stoppare e riprendere esecuzione di codice

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  it.comp.java ] 

Retour : Accueil du site it comp java  


  Sujet:   stoppare e riprendere esecuzione di codice  
 De: xar...@gmail.com
 Groupes: it.comp.java
 Organisation: http://groups.google.com
 Date: 14. Jul 2008, 09:51:59
ciao ragazzi, ho il seguente problema, abbastanza complicato. ho
numerose istanze relative a due classi di oggetti che interagiscono
tra di loro, Oggetto1 e Oggetto2 con i rispettivi metodi metodo1() e
metodo2(). consideriamo il caso in cui abbia diverse istanze di
Oggetto1 ed una sola istanza di Oggetto2(). ciò che mi servirebbe
realizzare è un comportamento di questo tipo:





public void metodo1() // relativo all'Oggetto1
{
//fai qualcosa

//blocca l'esecuzione del codice di questo metodo relativo
all'Oggetto1 corrente e salva il suo stato (cioè il punto fin dove ho
eseguito il codice) in una lista comune a tutti (statica)

// fai altre cose

//sblocca l'Oggetto2 che sicuramente si è messo nella lista dopo
avermi sbloccato

// riesegui metodo1() tra un certo numero di secondi
}

public void metodo2() // relativo all'Oggetto2
{
//fai qualcos'altro

//controlla nella lista statica degli oggetti se c'è qualche Oggetto1
in attesa, estrailo dalla lista (secondo un criterio assegnato e ben
preciso) e riprendi l'esecuzione del codice relativo (cioè sbloccalo)
// blocca l'esecuzione del codice di questo metodo relavito
all'Oggetto2 e salva salva il suo stato nella lista

// fai altre cose ancora

// riesegui metodo2() tra un certo numero di secondi
}

due problemi in uno quindi: sospendere e riprendere l'esecuzione di
codice (soluzione: usare i thread?) e riplannare l'esecuzione del
codice dopo un tot numero di secondi (soluzione: usare le classi Timer
e TimerTask)

da tenere presente che, vista la dinamica del problema, i due oggetti
si "bloccano" a vicenda, pertanto i due metodi non verranno mai
eseguiti simultaneamente.

per la prima, ho provato senza successo con i wait() e notify(), che
però non sembrano adattarsi bene all'esigenza che ho di avere multiple
istanze di Oggetti1. tentando di evitare l'utilizzo dei deprecati
suspend() e resume() sui thread (che comunque presenta lo stesso
qualche problema) cosa potrei fare?

per la seconda, Timer mi sembra abbia una gestione poco efficiente dei
rescheduling di task a intervalli di tempo variabili, in quanto ogni
volta dovrei rischedulare un new TimerTask() (cosa fattibile nel caso
di Oggetto1 visto che ne ho già istanze multiple e potrei quindi farla
estendere direttamente da TimerTask, un po' più inefficiente nel caso
di Oggetto2 di cui devo tenere solo una istanza). ci sono classi built-
in alternative che fanno questo?


tengo conto della complessità del problema esposto e ringrazio
chiunque mi dia anche una piccola imbeccata ;)


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)