NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Thread in Java: demoni, gruppi, priorità

 

THREAD DEMONI

I Thread demoni (daemon) sono i Thread che rimangono, in genere, "nascosti" e che "servono" altri Thread.

L'applicazione viene chiusa automaticamente se restano in vita solo Thread demoni.

Per rendere un qualsiasi Thread demone, è sufficiente utilizzare il metodo di Thread:

setDaemon(boolean b)   :   void

utilizzando, come parametro b, il valore true, per trasformare in demone un Thread.

 

GRUPPI DI THREAD

Alcuni Thread potrebbero riguardare una particolare operazione, dunque è naturale pensare di poterli raggruppare sotto un'unica entità, in modo da effettuare operazioni in un solo colpo su di essi.

L'entità che ci consente di fare ciò è il ThreadGroup, il cui costruttore è:

ThreadGroup(String id)

dove id deve essere una stringa univoca.

I Thread creati andranno collegati a tale ThreadGroup mediante il costruttore di Thread:

Thread(ThreadGroup group, Runnable target)

Ecco alcuni metodi utili di ThreadGroup:

  • activeCount()   :   int; // Restituisce il numero dei Thread attivi presenti in tale gruppo.

  • interrupt()   :   void; // Interrompe tutti i Thread di tale gruppo.

  • enumerate(Thread[] list)   :   int; // Riempie l'array passato come parametro con tutti i Thread attivi.

  • getName()   :   String; // Restituisce l'ID univoco di tale gruppo.

 

 

PRIORITA' DEI THREAD

Per impostare la priorità di un Thread in Java si utilizza il metodo di Thread:

setPriority(int newPriority)   :   void

Il valore intero passato come parametro può variare nell'intervallo [1, 10], con 1 che rappresenta ovviamente la priorità minima; esistono, comunque, tre costanti predefinite:

  • MIN_PRIORITY = 1;

  • NORM_PRIORITY = 5;

  • MAX_PRIORITY = 10.

Il gestore dei Thread sceglie, dunque, il Thread con priorità maggiore; tale Thread resterà in esecuzione finchè non terminerà la propria esecuzione (anche solo temporaneamente, invocando yield(), oppure cedendo il controllo con sleep()) oppure in caso di esecuzione di un Thread a priorità maggiore divenuto, nel frattempo, eseguibile.

 

 

COMMENTI, DOMANDE, ALTRE RISORSE, ...

Per commenti, domande o altro, accedere al Forum del sito (cliccare qui); per informazioni sulla Registrazione al sito, cliccare qui.

 

 

 
Vai all'inizio della pagina