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 :
    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...
        
    }
    In questo modo non carico all'avvio i 18 oggetti ma l'istanzio solo quando servono, ora vi chiedo :
  • 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