Thread ed Eccezioni Personalizzate in Java

Dopo aver studiato la sintassi per derivare le classi, siamo ora in grado di spiegare come creare degli oggetti personalizzati per la gestione delle eccezioni che abbiamo spiegato in una lezione precedente. Parleremo anche dei thread, cosa sono è stato spiegato in questo articolo, qui vedremo come si programmano in Java.
Riprendiamo il discorso dell’eccezione lanciata dal sistema quando tentiamo di dividere un numero per zero, avevamo visto come intercettare l’errore e scrivere un nostro messaggio all’utente. In questa lezione ci preoccuperemo di creare una classe, derivata da Exception delle librerie Java, che venga lanciata non appena si presenti una divisione per zero.

// file Main.java

package corso;

class CDivisionePerZero extends Exception
{
    void Informazioni()
    {
          System.out.println("Si è verificata un'eccezione
           dovuta ad una divisione per zero!");
    }
}

public class Main
{
   public static int Divisione(int iDividendo, int iDivisore)
        throws CDivisionePerZero
   {
        if (iDivisore == 0)
           throw new CDivisionePerZero();
        else
           return iDividendo / iDivisore;
   }

   public static void main(String[] args)
   {
        int a = 18, b = 0;

        try
        {
             a = Divisione(a, b);
        }
        catch (CDivisionePerZero e)
        {
             e.Informazioni();
                 return;
        }

        System.out.println("Il risultato della divisione
                è " + a);
     }
}

Abbiamo creato una classe da quella predefinita per la gestione delle eccezioni in Java, poi abbiamo avvertito la funzione Divisione della possibile eccezione CDivisionePerZero quindi abbiamo creato una nuova eccezione di questo tipo con new, lanciandola con la parola chiave throw.
Ognuno di noi ha spesso sentito parlare di processi e thread, che esistono sia in ambiente Windows che Linux. In questa lezione del corso impareremo a gestire i thread da codice, quindi avremo la possibilità di effettuare più elaborazioni contemporaneamente. La classe Java che permette di gestire i thread si chiama per l’appunto Thread ed è presente nel JDK ( Java Development Kit ), si deduce quindi che Java sia nativamente pensato per la gestione dei thread ed il programmatore non deve fare altro che servirsi delle classi preconfezionate che gli vengono offerte. Un programma che fa uso del multithreading avrà almeno una classe che rappresenta il thread; all’interno di essa è necessario definire un particolare metodo, denominato run(), che contiene le operazioni da effettuare. Vediamo di capire come funziona attraverso questo esempio:

// file Main.java

package corso;

class CEsempioThread extends Thread
{
	private boolean m_bFirst;

    CEsempioThread(boolean bFirst)
    {
          m_bFirst = bFirst;
    }

     public void run()
     {
         for (int i = 1; i < 1000; i++)
         {
              if (m_bFirst)
                   System.out.println("Il valore letto
                          nel primo thread è " + i);
             else
                   System.out.println("Il valore letto
                          nel secondo thread è " + i);
        }
   }
}

public class Main
{
    public static void main(String[] args)
    {
       CEsempioThread t1 = new CEsempioThread(true);
       CEsempioThread t2 = new CEsempioThread(false);

       System.out.println("Faccio partire il primo thread");
       t1.start();
       System.out.println("Faccio partire il secondo thread");
       t2.start();
    }
}

Se notate l’output del programma noterete che l’elaborazione dei dati va da un thread all’altro.

<< Lezione Precedente – Inizio CorsoLezione Successiva >>

Pubblicato
Categorie: Java

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.