Ú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:

  1. V novém zásobníku volání bude vytvořeno vlákno.
  2. Vlákno změní svůj stav z Nový na Runnable.
  3. 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 -

  1. Datové struktury Java Interview Otázky
  2. Jejda na otázky rozhovoru Java
  3. Otázky s vícevláknovými rozhovory v Javě
  4. Dotazy na testování Java testování

Kategorie: