Jak řešit zablokování v Javě?



Tento článek popisuje koncept zablokování v Javě s příkladem, který ukazuje, jak se vlákna ve vícevláknovém programu zablokují.

Programovací jazyk Java podporuje . Zahrnuje více vláken běžících současně pro multitasking. Ale v určitých případech nebo kvůli určitým nedostatkům se vlákna ocitnou ve stavu čekání navždy. V tomto článku porozumíme stavu zablokování v a různé způsoby, jak se tomu vyhnout. Níže jsou diskutována témata v tomto blogu:

Co je zablokování v Javě?

Zablokování v Javě je stav, kdy jsou dvě nebo více vláken navždy blokovány a čekají na sebe.





K tomu obvykle dochází, když více vláken potřebuje stejné zámky, ale získat je v různých objednávkách. v Javě trpí zablokování kvůli synchronizovanému klíčovému slovu.

Způsobí blokování provádějícího vlákna při čekání na zámek nebo monitor spojený se zadaným objekt .



Zablokování v Javě - Edureka

Příklad zablokování

public class Příklad {public static void main (String [] args) {final String r1 = 'edureka' final String r2 = 'java' Thread t1 = new Thread () {public void run () {synchronized (r1) {System. out.println ('Thread 1: Locked r1') try {Thread.sleep (100)} catch (exception e) {} synchronized (r2) {System.out.println ('Thread 1: Locked r2')}}} } Thread t2 = new Thread () {public void run () {synchronized (r1) {System.out.println ('Thread 2: Locked r1') try {Thread.sleep (100)} catch (exception e) {} synchronized (r2) {System.out.println ('Thread 2: Locked r2')}}}} t1.start () t2.start ()}}
 Výstup: Závit 1: Uzamčeno r1 Závit 2: Uzamčeno r2

Jak se vyhnout zablokování v Javě?

I když není zcela možné vyhnout se zablokování, ale můžeme se řídit určitými opatřeními nebo ukazateli, abychom se jim vyhnuli:

spojení dvou zdrojů dat
  • Vyhněte se vnořeným zámkům - Musíte se vyvarovat blokování více vláken, to je hlavní důvod zablokování. Obvykle se to stane, když dáte zámky více vláknům.

  • Vyhněte se zbytečným zámkům - Zámky by měly být přiděleny důležitým vláknům. Dává zámky zbytečným podprocesům, které způsobují zablokování.



  • Používání vlákna - Zablokování se obvykle stane, když jedno vlákno čeká na dokončení druhého. V tomto případě můžeme použít Thread.join s maximální dobou, kterou vlákno zabere.

Tím se dostáváme na konec tohoto článku, kde jsme se dozvěděli o zablokování v Javě a jak se mu vyhnout. Doufám, že máte jasno se vším, co bylo s vámi v tomto tutoriálu sdíleno.

najít největší prvek v poli java

Pokud shledáte tento článek jako „Zablokování v Javě“ relevantní, podívejte se na důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě.

Jsme tu, abychom vám pomohli s každým krokem na vaší cestě a přišli s osnovami určenými pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování Java a naučil vás základní i pokročilé koncepty Java spolu s různými jako Přezimovat & .

Pokud narazíte na jakékoli dotazy, neváhejte se zeptat na všechny své dotazy v sekci komentářů v „Zablokování v Javě“ a náš tým vám rád odpoví.