Introduzione a Java Domande e risposte di intervista multi-thread
Java è in pieno boom in questi giorni grazie alla sua piattaforma indipendente. Può essere eseguito ovunque e quindi viene ampiamente utilizzato con diverse tecnologie in arrivo. Per essere preparato, il multi-threading è un argomento importante che si concentra sulle interviste, quindi hai finalmente trovato il lavoro dei tuoi sogni in Java Multi-threading ma ti stai chiedendo come rompere l'intervista e quale potrebbe essere il probabile multi-threading Java Domande di un'intervista. Ogni colloquio è diverso e anche la portata di un lavoro è diversa. Esaminiamo alcune importanti domande di intervista multi-thread Java che potrebbero essere poste nelle interviste multi-thread Java che vorresti perseguire.
Di seguito sono riportate le principali domande e risposte sull'intervista multi-threading Java
1.Che cos'è Thread in JAVA e come lo si implementa?
Risposta:
Un thread aiuta a facilitare il multi-tasking e la multi-elaborazione all'interno di un programma. Utilizza la CPU in modo efficace e aiuta a migliorare le prestazioni dell'applicazione. Java consente all'utente di utilizzare più thread alla volta. Può funzionare in parallelo con altri programmi senza interruzioni. Questo aiuta a ridurre i tempi per il processo. Ad esempio, se l'esecuzione di un programma richiede 60 secondi, possiamo usare 6 thread che ci daranno il risultato in 10 secondi.
Java offre due modi per implementare il thread in un programma. L'interfaccia java.lang.Runnable ha un'istanza java.lang.Un thread che richiede l'esecuzione di un'attività tramite un'istanza. La classe Thread implementa già Runnable, quindi un utente può sovrascrivere direttamente il metodo run () estendendo la classe Thread o implementando l'interfaccia Runnable.
2.Quando usare Runnable e quando usare Thread in Java?
Risposta:
Java non supporta più eredità di una classe, ma consente di implementare più interfacce alla volta. Pertanto, sarà meglio implementare Runnable piuttosto che estendere la classe Thread.
3. Come si fa a distinguere tra un thread e un processo?
Risposta:
Un thread è un sottoinsieme di un processo. Un processo può avere più thread in esecuzione per esso. I thread possono eseguire qualsiasi parte di un processo. Un processo ha il proprio indirizzo in cui è archiviato, mentre thread condivide l'indirizzo del processo che lo ha creato. La creazione di un processo è un processo frenetico mentre i thread possono essere creati facilmente. Un thread viene generalmente indicato come un processo leggero. La comunicazione tra processi è difficile mentre i thread possono comunicare facilmente utilizzando i metodi Java di wait () e notify (). I processi sono indipendenti, quindi qualsiasi modifica apportata al processo non influisce sui processi figlio. Al contrario, se vengono apportate modifiche in un thread, è possibile che altri thread possano essere interessati.
4. Perché si dice che il comportamento del thread è imprevedibile?
Risposta:
Il motivo di ciò è lo scheduler di thread che gestisce l'esecuzione dei thread. Lo scheduler potrebbe avere prestazioni diverse su piattaforme diverse Windows, UNIX, LINUX, ecc. Durante l'esecuzione dello stesso thread può fornire output diversi su piattaforme diverse e talvolta anche sulla stessa piattaforma. Per risolvere questo, un utente può creare lo stesso oggetto Runnable, creare loop run () in entrambi i thread e avviarli entrambi insieme. Idealmente, lo scheduler dovrebbe selezionare entrambi i thread e le prestazioni non dovrebbero essere influenzate, ma entrambi i thread inseriranno i loop in modo anonimo.
5. Che cos'è una variabile volatile in Java e qual è il suo significato?
Risposta:
Java facilita all'utente la condivisione di variabili presenti in diversi thread. Una variabile volatile funge da modificatore speciale che può essere utilizzato solo per variabili di istanza. Poiché questa variabile è condivisa, ci sarebbero cambiamenti coerenti con essa. Il thread deve garantire che abbia accesso esclusivo a queste variabili e un blocco viene forzato per l'esclusione reciproca delle variabili condivise. Assicura che accada una scrittura prima di qualsiasi lettura conseguente. Il modello di memoria Java garantisce la coerenza di questa variabile. I metodi volatili non possono essere presenti in quanto possono essere utilizzati solo sotto forma di variabili.
6. A che cosa serve la parola chiave sincronizzata? Qual è la differenza tra parole chiave sincronizzate e volatili?
Risposta:
La parola chiave sincronizzata viene utilizzata quando lo scopo è eseguire un solo thread alla volta in una sezione di codice appropriata. Può essere usato per mostrare quattro tipi di blocchi diversi come di seguito:
1) Metodi di istanza
2) Metodi statici
3) Blocchi di codice all'interno dei metodi di istanza
4) Blocchi di codice all'interno di metodi statici
Può essere dichiarato come:
Esempio di vuoto sincronizzato pubblico () ()
La differenza tra parola chiave volatile e sincronizzata è che la sincronizzazione può essere utilizzata con variabili e metodi, mentre la volatile non può essere utilizzata con metodi. Le variabili volatili non vengono archiviate nella memoria cache, le variabili sincronizzate vengono archiviate nella memoria cache. Una variabile volatile non si fermerà mai in deadlock poiché non richiede alcun blocco. Mentre nelle variabili sincronizzate se non vengono eseguite correttamente, potrebbe finire in un deadlock.
7. Perché metodi come wait (), notify () e notification all () sono presenti nella classe oggetto e non nella classe Thread?
Risposta:
La classe di oggetti ha monitor che consentono al thread di bloccare un oggetto, mentre Thread non ha monitor. Quando viene chiamato uno dei metodi sopra indicati, attende che un altro thread rilasci l'oggetto e avvisa il monitor chiamando notification () o avvisa all (). Quando viene chiamato il metodo notify (), fa il lavoro di notifica a tutti i thread che attendono il rilascio dell'oggetto. Il monitor della classe di oggetti controlla se l'oggetto è disponibile o meno. La classe thread con questi metodi non sarebbe di aiuto in quanto esistono più thread su un oggetto e non viceversa.
8. Spiegare la differenza tra i metodi sleep () e wait ().
Risposta:
1) Il metodo sleep () viene chiamato sui thread e non sugli oggetti. Il metodo Wait () viene chiamato sugli oggetti.
2) Quando viene chiamato il metodo wait (), il monitor sposta il thread dallo stato di esecuzione a quello di attesa. Una volta che un thread è in wait (), può passare a runnable solo quando ha notification () o notificationall () per quell'oggetto. Lo scheduler cambia lo stato dopo questo. Mentre si è nel metodo sleep (), lo stato viene modificato in attesa e tornerà a essere eseguibile solo dopo il tempo di sospensione.
3) Il metodo Wait () fa parte della classe java.lang.Object, mentre sleep () fa parte della classe java.lang.Thread.
4) Wait () viene sempre utilizzato con un blocco sincronizzato in quanto richiede di bloccare un oggetto mentre sleep () può essere utilizzato da un blocco sincronizzato esterno.
9. Come forzare l'avvio di un thread in Java?
Risposta:
In Java, il multithreading non può forzare l'avvio di un thread. Solo lo scheduler dei thread può controllare i thread e non sono esposti ad alcuna API per il controllo.
10. Il thread lascia il blocco degli oggetti quando vengono chiamati i metodi wait () e sleep ()?
Risposta:
Quando un thread è in modalità sleep () non lascia il blocco e passa allo stato di attesa. Il thread attende che il tempo di sospensione finisca. Quando viene utilizzato il metodo wait () il thread lascia il blocco dell'oggetto e passa allo stato di attesa. Una volta chiamato notification () viene nuovamente impostato sullo stato di esecuzione e acquisisce il blocco.
Articolo raccomandato
Questa è stata una guida all'elenco delle domande e risposte dell'intervista multi-thread Java in modo che il candidato possa facilmente reprimere queste domande sull'intervista multi-thread Java. Puoi anche consultare i seguenti articoli per saperne di più -
- Domande per l'intervista con gli sviluppatori Java - Come risolvere le 7 domande principali
- Guida completa allo sviluppo di app Java (Awesome Theory)
- Maven Intervista Domande e risposte | Migliori e più richiesti
- 10 domande di intervista avanzate su AngularJS per esperti