Salve,
scusate la lunghezza del thread ma ho un quesito ,per me spinoso, da porvi.
Ho creato un programma che lavoro con 18 oggetti diversi e vorrei trovare la soluzione ideale per ottimizzarlo sia in termini di velocità che di uso delle risorse.
Attualmente uso il seguente schema:
- Ognuno dei 18 oggetti è più o meno composto in questo modo :
codice://...diversi import... public class Classe { public JPanel panCENTRO = new JPanel(); //...tante altre variabili... public Classe() {} public void azioni() {} //...tanti altri metodi... }- La classe che gestisce gli oggetti lavora più o meno in questo modo :
codice://...diversi import... public class Principale { public JPanel panCENTRO = new JPanel(); public Classe1 uno=new Classe1(); public Classe2 due=new Classe2(); public Classe3 tre=new Classe3(); ... public Classe18 diciotto=new Classe18(); //...tante altre variabili... public Principale() {} public void uno() { uno.lavora(); } public void due() { due.lavora(); } //...tanti altri metodi... }
In pratica con questo schema carico tutto all'avvio del programma ma l'uso delle risorse è eccessivo.
Ho pensato a due alternative :
- A) Modificare la classe principale in questo modo :
In questo modo non carico all'avvio i 18 oggetti ma l'istanzio solo quando servono, ora vi chiedo :codice://...diversi import... public class Principale { public JPanel panCENTRO = new JPanel(); public Principale() {} public void uno() { Classe1 uno=new Classe1(); uno.lavora(); uno=null; r.gc(); //chiamo il garbage collector } public void due() { Classe2 due=new Classe2(); due.lavora(); due=null; r.gc(); //chiamo il garbage collector } //...tanti altri metodi... }- A.1)risparmio davvero la memoria e l'utilizzo delle risorse?
- A.2)Alla fine del metodo la classe istanziata viene deferenziata quindi con garbage collector dovrei riuscire a liberare le risorse occupate, giusto?
- B)Vorrei utilizzare i thread, tecnica che non ho mai usato prima ma che a grandi linee vorrei utilizzare in questi modo:
- 1)Associare ad ogni thread un oggetto diverso
- 2)Farli partire in contemporanea e lavorare con i metodi di Thread come start,stop ecc
Con questa tecnica riuscirei ad ottimizzare l'uso delle risorse?
Avete altre alternative da suggerirmi?
Grazie per le eventuali risposte!
Saluti
Junky.Funki