venerdì 1 febbraio 2008

Thread & company

Durante questa settimana non sono riuscito a fare molto.
Ieri ho dato il mio ultimo esame... laboratorio di sistemi operativi
Quindi un giorno di lavoro in meno, in più non sono stato nemmeno bene... insomma ho lavorato ben poco purtroppo

Comunque sono riuscito ad implementare, nella mia mini-stupida applicazione i thread

In pratica ho provato a vedere se si riuscivano ad usare in echo2 i thread e tutto ciò che riguarda la programmazione concorrente che Java mette a disposizione.

Mi sono dedicato ai thread perchè mi sono accorto, leggendo qua e la e provando con il codice, che la classe timer di swing non è disponibile in echo2.

Ma i Thread sì.

Funzionano, ne ho creati due, da far partire in momenti diversi, che aggiornato ogni secondo delle etichette di testo... un thread parte attivo con l'applicazione e s ferma all'atto dell'apertura di una nuova finestra, l'altro viceversa... viene attivato con l'apertura di una nuova finestra e si adormenta alla chiusura della stessa.

Attualmente ho utilizzato un busy waiting per gestire il controllo dello stato dell'applicazione, giusto per provare.
Lo so, non è una soluzione molto corretta, ma qui non mi serviva l'efficienza.
Ma comunque credo sarebbero comunque disponibili i monitor e gli altri sistemi di sincronizzazione di Java, senza alcun problema.

Però è emersa un'altra particolarità di Echo2... che in effetti avevo letto, ma non compreso sino in fondo...
In pratica non tutto cio che il lato server "aggiorna" viene effettivamente aggiornato lato client... la sincronizzazione avviene solo quando lato client succede qualcosa... questo per ridurre lo scambio di messaggi tra client e server per non appesantire la banda

Questo cosa comporta? che per esempio le etichette dei contatori, sebbene i contatori si tengono aggiornati lato server e sono coerenti anche lato client quando vengono visualizzati, romangono FISSI fino a quanto l'utente fa qualcosa lato client... apre una finestra, clicca un pulsante, fa uno scrolling eccetera

Infatti i miei contatori rimangono apparentemente fermi, ma alla prima interazione si aggiornano con i valori che piano piano si erano aggiornati via server...
Questo potrebbe creare dei problemi, ma esiste il sistema per rimediare, modificando la parte client del framework

Comunque, la disponibilità e il funzionamento dei thread, ha messo in risalto che gli eventuali problemi che potrebbero nascere dal bisogno di avere una parte del codice "bloccata" in attesa di qualche interazione, si potrebbero risolvere proprio con l'utilizzo dei thread... che di fatto si posson bloccare su delle risorse e/o condizioni varie con dei monitor o altre soluzioni simili

Nessun commento: