Úvod Otázky a odpovědi Java Interview na multithreading
Než přistoupíme k rozhovorům v jazyce Java týkajícím se multithreadingu, pojďme diskutovat o některých faktech o multithreadingu.
# 1 - Takže bychom měli nejprve vědět, co je vlákno?
Je to nejmenší jednotka zpracování, která se nazývá vlákno. Je to v přírodě lehký, takže se snadno používá. Nyní si myslíme, že proč bychom to měli potřebovat, multithreading se používá k dosažení multitaskingu. Multitaskingu lze dosáhnout i jiným způsobem a je znám jako multiprocesing.
Vícevláknové zpracování je však více populární a je efektivní ho používat při vícenásobném zpracování, protože vlákna mají vlastnosti, které používá oblast sdílené paměti, zatímco v případě více procesů spotřebovává spoustu paměti a dalších zdrojů, které nejsou účinné.
Proces provádění více vláken současně k provedení nějaké práce se tedy nazývá multithreading.
Některé výhody používání multithreadingu:
- Vlákna fungují nezávisle, takže je nezávislá na jiných operacích probíhajících v systémech, a proto je možné provádět více operací najednou.
- Časová náročnost je při použití multithreadingu menší, protože mnoho operací lze provádět současně.
- Vlákna jsou nezávislá, jak již bylo uvedeno, takže v jednom vláknu dojde k výjimce, která nebude rušit operace jiných vláken.
- Náklady na komunikaci mezi dvěma vlákny jsou nízké.
Multitaskingu můžeme dosáhnout dvěma způsoby:
- Procesní multitasking (multiprocesing)
- Multitasking na základě vláken (multithreading)
POZNÁMKA: Jak diskutujeme o multithreadingu, zaměříme se na multitasking na vláknech.
Životní cyklus vlákna:
- Nový
- Runnable
- Běh
- Nelze spustit (blokováno)
- Ukončeno
POZNÁMKA: Pro orientaci a lepší porozumění si pečlivě prohlédněte níže uvedený obrázek.
# 2 - Jak se vytvářejí vlákna?
Nyní je to nejdůležitější a první bod, kterým můžeme vlákno vytvořit. Existují dva způsoby, jak lze vytvořit vlákna, která jsou diskutována níže:
- Rozšířením třídy vlákna
- Implementací rozhraní Runnable
POZNÁMKA:
Při vytvoření nového vlákna se provádějí následující úkoly:
- V novém zásobníku volání bude vytvořeno vlákno.
- Vlákno změní svůj stav z Nový na Runnable.
- Když bude vlákno spuštěno, najde jeho metodu run () a poté provede.
PŘÍKLAD:
By extending Thread class
class MyThread extends Thread
(
public void run()
(
System.out.println("thread is running…");
)
public static void main(String args())
(
MyThread t1=new MyThread ();
t1.start();
)
)
PŘÍKLAD:By implementing Runnable interface
class MyThread implements Runnable
(
public void run()
(
System.out.println("thread is running…");
)
public static void main(String args())
(
MyThread m1=new MyThread ();
Thread t1 =new Thread(m1);
t1.start();
)
)
POZNÁMKA: Nezapomeňte na rozdíl mezi výše uvedenými dvěma příklady. Hlavním rozdílem ve výše uvedených dvou příkladech je, že pokud nebudeme rozšiřovat vlákno, spíše se pokusíme vytvořit vlákno implementací rozhraní Runnable a třídí metodu start () pro spuštění vlákna, potom nebude běhoun vytvořen v novém zásobníku volání. protože nebude identifikována jako vlákno.
Abychom ji identifikovali jako vlákno, musíme předat instanci třídy, kde jsme implementovali rozhraní Runnable Interface jako argument konstruktoru třídy vlákna, a pak musíme zavolat metodu start ().
Plánování ve vlákně:
Jak všichni vědí, že plán znamená udělat plán úkol v určitém čase.
Plánování vlákna je podobný mechanismus plánování konkrétního vlákna, které udržuje některé protokoly. Existují dva různé způsoby, jak rozvrhování vláken funguje v Javě.
- Preventivní plánování
- Krájení času.
Preventivní plánování:
JMV rozhoduje o úkolu s nejvyšší prioritou a spustí provádění, dokud nenastane čekající nebo mrtvý stav nebo dokud nenastane úkol s vyšší prioritou.
Časové krájení:
JVM začne provádět konkrétní vlákno pro konkrétní časové období a poté přesunout stejné vlákno do fondu a zvolit jiné vlákno na základě priority a dalších faktorů pro provádění. Tento proces pokračuje, dokud celý proces nekončí.
Nyní, pokud hledáte práci, která souvisí s Java multithreadingem, musíte se připravit na 2018 Java Interview otázek o multithreadingu. Je pravda, že každý pohovor se liší podle různých profilů práce. Zde jsme připravili důležité otázky a dotazy týkající se rozhovoru v jazyce Java Interithreading, které vám pomohou dosáhnout úspěchu v rozhovoru.
V tomto článku 2018 otázek Java Interview o multithreadingu představíme 10 nejdůležitějších a nejčastěji kladených otázek Java Interview o multithreadingu. Tyto rozhovory jsou rozděleny do dvou částí:
Část 1 - Otázky Java Interview o vícevláknovém zpracování (základní)
Tato první část se zabývá základními otázkami Java Interview a odpověďmi na multithreading.
Q1. Rozlišujte mezi procesem a vláknem?
Odpovědět:
Proces je program nebo aplikace, zatímco vlákno je jediný úkol, který má být v procesu proveden. Vlákno je lehké, zatímco proces je těžký. Vlákno vyžaduje méně, zatímco proces vyžaduje více zdrojů, proto se v přírodě nazývá silně vážený.
Q2. Rozlišujte mezi vláknem uživatele a vláknem démona?
Odpovědět:
Vlákno vytvořené v javě se nazývá uživatelské vlákno. Vlákno démona vždy běží na pozadí a jeho celý životní cyklus závisí na hlavním vláknu. Podproces démona běžící na pozadí nezabrání JVM v jeho ukončení. Podřízené vlákno vytvořené z vlákna démona bude také vlákno démona.
Přejdeme k dalším otázkám Java Interview o multithreadingu.
Q3. Jiný způsob vytváření vlákna v Javě?
Odpovědět:
Vlákna v Javě mohou být vytvořena dvěma způsoby:
- Rozšířením třídy vlákna.
- Implementací Runnable Interface.
Q4. Jaký je životní cyklus vlákna?
Odpovědět:
Toto jsou časté dotazy Java Interview na Multithreading, které byly položeny v rozhovoru. Následuje životní cyklus vlákna:
- Nový
- Runnable.
- Běh.
- Blokováno.
- Ukončeno.
Q5. Co se stane, když voláme metodu run () třídy Thread?
Odpovědět:
Přímé vyvolání metody run () zkompiluje a provede program úspěšně, ale stejný program nebude považován za vlákno, protože nebude vytvořen žádný nový zásobník volání a program zahájí jeho provádění ve stejném zásobníku volání, kde běží hlavní.
Pro vytvoření vlákna, které by mělo být spuštěno s novým stackem volání, je třeba použít metodu start () třídy Thread.
Část 2 - Otázky Java Interview o multithreadingu (pokročilé)
Podívejme se nyní na pokročilé dotazy a odpovědi týkající se rozhovoru v jazyce Java o multithreadingu.
Q6. Můžeme pozastavit provádění vlákna v určitém čase?
Odpovědět:
Ano, toho lze dosáhnout java zavoláním spánku () třídy Thread. Metoda Sleep () také vezme argument, který ukazuje čas v milisekundách.
Q7. Jak můžeme dosáhnout rozvrhování vlákna v javě?
Odpovědět:
Ano, plánování vláken v javě je možné. Vlákna v Javě lze naplánovat dvěma způsoby, např. Time Slicing a Pre-emptive Scheduling.
Přejdeme k dalším otázkám Java Interview o multithreadingu.
Q8. Lze vlákno spustit dvakrát?
Odpovědět:
Ne, vlákno nelze spustit dvakrát. Pokud se pokusíme vlákno spustit dvakrát, vyvolá to „java.lang.IllegalThreadStateException“.
Q9. Co je zavírací háček v Javě?
Odpovědět:
Toto jsou nejoblíbenější dotazy Java Interview na Multithreading, které byly položeny v rozhovoru. Vypínací hák je mechanismus, který se používá pro prostředky čištění, když se JVM vypne normálně nebo náhle.
Q10. Co je těkavé?
Odpovědět:
Volatile je klíčové slovo v jazyce Java, které lze použít s proměnnými. Pokud je proměnná deklarována jako těkavá, všechna vlákna přečtou hodnotu stejné proměnné z hlavní paměti spíše než z mezipaměti, čímž zabrání čtení chyby, když více vláken použije stejnou operaci ve svých operacích.
Doporučené články
Toto byl průvodce seznamem otázek a odpovědí na Java Interview, aby uchazeč mohl tyto otázky Java Interview na multithreading snadno zakročit. Zde v tomto příspěvku jsme studovali top otázky Java Interview na multithreading, které jsou často kladeny v rozhovorech. Další informace naleznete také v následujících článcích -
- Datové struktury Java Interview Otázky
- Jejda na otázky rozhovoru Java
- Otázky s vícevláknovými rozhovory v Javě
- Dotazy na testování Java testování