View Full Version : [J2ME e Java] svegliare un thread che è addormentato con sleep
Per svegliare un thread che è addormentato con sleep come posso fare ?
Devi avere un riferimento a quel Thread, e con quello invochi interrupt(). Questo causa il rilascio di un'eccezione InterruptedException. Siccome il tuo interrupt() può non essere l'unica condizione in forza della quale è generata l'eccezione InterrtupedException, potresti usare un campo boolean per segnalare che l'eccezione è di quelle volute. Un cosa tipo:
//pseudo
Thread runner;
boolean sleeping;
boolean èProprioQuella= false;
...blablabla
try {
sleeping = true;
Thread.sleep(XYZ);
} catch(InterruptedException ex) {
if(èProprioQuella) {
èProprioQuella = false;
}
}
...blabla
void wakeUp() {
if(sleeping && runner != null) {
èProprioQuella = true;
runner.interrupt();
}
...e poi qui devi decidere se rendere la richiesta bloccante o no
...per chi voglia svegliare il dormiente.
}
Pensavo appunto che fosse interrupt... Però mi creava problemi se interrupt fosse arrivata al di fuori della sleep...
Comunque mi sono arrangiato in altro modo...dividendo l'intervallo di sleep in molti intervalli e controllando la variazione di un variabile ed in tal caso uscendo dal ciclo di sleep...
Grazie :)
sottovento
08-06-2006, 05:58
Cionci,
qualche settimana fa chiedevi informazioni su Java per palmari.
Questa domanda e' correlata a quella precedente, suppongo.
Sto valutando un lavoro da fare su un palmare Win CE.
Questi tipi di lavori li ho sempre fatti in C (Visual), ma preferirei di gran lunga affrontarli in Java.
Hai informazioni o suggerimenti in merito? Stai usando un palmare di questo genere? La tua esperienza mi suggerisce di stare alla larga da qualcosa, e di preferire qualcos'altro?
Grazie per l'aiuto e scusa l'off-topic
High Flying
Sottovento
Sto programmando sul celullare... Volevo farlo sul palmare, ma quando sono venuto a conoscenza della situazione ho abbandonato...
Ti spiego:
- per Windows Mobile non esistono VM ufficiali
- le VM free sono ancora lontane dalla prima versione ufficiale o non supportano il profilo MIDP o addirittura si inventano le loro API
- a pagamento sono disponibili alcune VM tra cui la J9 di IBM che si dice sia ottima, ma ovviamente è a pagamento
- alcuni produttori forniscono una VM nei CD di supporto, tra questi HP, per gli Ipaq, (nemmeno per tutti, quelli più costosi in definitiva) che sembra fornisca un'ottima VM
Quindi la tanto acclamata portabilità di Java, pur funzionando "abbastanza" sui cellulari, è praticamente NULLA sui palmari... Non cpaisco perchè la Sun non si metta a fara un VM ufficiale... Basterebbe fare due versioni per Windows Mobile...una per CPU Samsung e una per Intel e coprirebbero l'80% del mercato...proprio non capisco...
http://www.berka.name/stan/jvm-ppc/java_for_pda.html
Quindi a meno di avere tutti Ipaq con la stessa VM o di avere IBM J9 o di voler provare ad installarci Linux, sembra quasi che programmare in Java su un palmare sia un'utopia... A questo punto credo proprio che sia meglio .Net per i palmari...
http://msdn.microsoft.com/netframework/programming/netcf/downloads/default.aspx
sottovento
08-06-2006, 16:05
Grazie per le info. Tempo fa avevo provato Waba, il quale e' carino ma come saprai non assomiglia poi tanto a Java.
Purtroppo il mio cliente si orientera' su un iPaq oppure su un palmare WinCe mai sentito prima, il quale e' orientato alle applicazioni industriali (robusto, con case speciale per ambienti ostili, lettore di codici a barre e tutto il resto).
Mi tocchera' tornare a Embedded Visual... peccato
High Flying
Sottovento
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.