Multithreading in Java | Spiegato

Multithreading in Java | Spiegato
Java fornisce una funzione denominata multithreading che consente l'esecuzione simultanea di più thread e, di conseguenza, migliora l'utilizzo della CPU, la condivisione delle risorse, la risposta dell'utente e così via. Il multithreading viene utilizzato frequentemente perché i thread utilizzano l'area di memoria condivisa e quindi non è necessario allocare la memoria separata a qualsiasi thread di conseguenza, salva la memoria ed esegue una rapida esecuzione. I casi d'uso del mondo reale più comuni di multithreading coinvolgono giochi per computer, animazioni e così via.

Questo articolo presenta una guida completa di Multithreading in Java e per una profonda comprensione, coprirà i seguenti concetti:

  • Cosa sta multithreading in Java
  • Perché il multithreading è importante in Java
  • Ciclo di vita dei fili in java
  • Metodi Build-in Java per Multithreading
  • Implementazione pratica del multithreading in Java

Quindi iniziamo!

Cosa è multithreading

È un processo che ci consente di eseguire almeno due thread contemporaneamente ed è anche definito concorrenza in Java. Java MultithReading massimizza l'utilizzo della CPU mentre esegue ogni thread in parallelo. Inoltre, risparmia la memoria come in multithreading non è necessario allocare la memoria separata a più thread.

Perché il multithreading è importante in Java

MultithReading fornisce una vasta gamma di funzionalità e il significato di Java MultithReading può essere valutato dalle caratteristiche sotto l'elenco:

  • Java MultithReading consente la condivisione delle risorse, quindi all'interno di un processo è possibile condividere più risorse come codice, memoria, file, dati e così via.
  • I thread sono indipendenti, quindi le eccezioni che si sono verificate in un thread non influenzerebbero le prestazioni degli altri.
  • Il multithreading in Java consente di eseguire un programma anche se un pezzo specifico del programma viene bloccato per qualche motivo o eseguendo una lunga attività/operazione.
  • Risparmia il tempo in quanto più attività/operazioni possono essere eseguite contemporaneamente.

Solo alcune funzionalità sono elencate qui, tuttavia, ci sono molte altre come scalabilità, efficacia in termini di costi, ecc. che mostrano il dominio del multithreading.

Ciclo di vita dei fili in java

A partire da ora, abbiamo imparato cosa è multithreading e perché è così importante in Java? Ora impareremo a conoscere il ciclo di vita del thread che è composto da vari stati elencati di seguito:

Nuovo: In questo stato, un thread viene avviato/creato usando il "Filo" classe o "Runnable" interfaccia. Rimane all'interno di questo stato fino a quando un programma non avvia/avvia un thread.

Runnable: All'interno di questo stato, l'istanza del thread verrà invocata utilizzando un metodo integrato Start () e il thread rimane nello stato eseguibile fino a quando un'attività non viene eseguita.

Corsa: In questo stato, un thread avvia l'esecuzione.

In attesa: All'interno di questa fase, il thread va in uno stato temporaneamente inattivo, il che significa che un thread dorme, aspetta o in uno stato bloccato.

Terminato/morto: Un thread entra in questo stato quando si verifica un'eccezione o se il thread completa la propria esecuzione/elaborazione.

Metodi Build-in Java per Multithreading

Esiste un elenco di metodi predefiniti Java che possono essere utilizzati all'interno dei thread per ottenere funzionalità diverse. Alcuni metodi usati di frequente sono elencati nella tabella seguente:

Nome metodo Descrizione
inizio() Viene utilizzato per iniziare l'esecuzione del thread.
correre() esegue un'azione specifica per un thread.
getName () Restituisce il nome del thread.
prodotto () Arresta il thread corrente e consente ad altri di eseguire.
SetPriority (int newPriority) Specifica la priorità del thread.
getPriority () Restituisce la priorità del thread.
Sonno (int millisecondi) Dorma il filo per un periodo di tempo specificato.
getID () Restituisce l'ID del thread.

Implementazione pratica del multithreading in Java

Ora, è tempo di capire il concetto di Java Multithreading usando l'implementazione pratica. Quindi, considereremo un esempio in cui eseguiremo multithreading e utilizzeremo alcuni dei metodi integrati sopra menzionati.

Esempio

In questo esempio eseguiremo il multithreading implementando l'interfaccia runnable:

Classe pubblica MultithReadingexample Implements Runnable
@Oltrepassare
public void run ()

public static void main (string [] args)
Thread threadobj1 = new thread ("thread1");
Thread threadobj2 = new thread ("thread2");
threadobj1.inizio();
threadobj2.inizio();
Sistema.fuori.println ("nome del primo thread:" + threadobj1.getName ());
Sistema.fuori.println ("Nome del secondo thread:" + threadobj2.getName ());

Nello snippet di codice sopra, implementiamo l'interfaccia java runnable e all'interno della classe utilizziamo il @Oltrepassare annotazione che mostra che il "Multithreadingexample" sta preparando il correre() Metodo di interfaccia eseguibile. Successivamente, creiamo più thread e iniziamo l'esecuzione del thread usando il inizio() metodo. Infine, otteniamo i nomi del thread usando il getName () Metodo e stamparli come mostrato nello snippet seguente:

Questo verifica il funzionamento di multi-thread in Java.

Nell'esempio sopra, eseguiamo il multithreading implementando Runnable interfaccia. Tuttavia possiamo anche eseguire multithreading estendendo un predefinito Filo Classe come mostrato nel seguente frammento:

Classe pubblica MultithReadingExample estende il thread

Estendendo la classe thread è possibile avvalersi delle funzionalità dei metodi Java predefiniti.

Conclusione

Il multithreading consente l'esecuzione simultanea di due o più thread che massimizza l'utilizzo della CPU, risparmia tempo, memoria, ecc. Il multithreading può essere eseguito estendendo o implementando rispettivamente la classe thread o l'interfaccia eseguibile. Vari metodi integrati di classe thread e interfaccia RUNNABLE possono essere utilizzati in MultithReading per eseguire funzionalità diverse come l'arresto del thread corrente e consentire l'esecuzione di altri thread, specificando la priorità ai thread e così via.
Questo articolo spiega diversi aspetti del multithreading come ciò che è multithreading, la sua importanza, il ciclo di vita, i metodi e l'implementazione pratica.