Java에서 교착 상태를 처리하는 방법?



이 기사에서는 다중 스레드 프로그램의 스레드가 차단되는 방법을 보여주는 예제와 함께 Java에서 Deadlock의 개념을 다룹니다.

Java 프로그래밍 언어 지원 . 멀티 태스킹을 위해 동시에 실행되는 여러 스레드가 포함됩니다. 그러나 특정 경우 또는 특정 단점으로 인해 스레드는 영원히 대기 상태에 있습니다. 이 기사에서는 교착 상태를 그리고 그것을 피하는 다른 방법. 다음은이 블로그에서 논의 된 주제입니다.

자바에서 패키지 만들기

Java의 교착 상태는 무엇입니까?

Java의 교착 상태는 둘 이상의 스레드가 서로를 기다리면서 영원히 차단되는 조건입니다.





이는 일반적으로 여러 스레드에 동일한 잠금이 필요하지만 다른 순서로 획득 할 때 발생합니다. Java에서 동기화 된 키워드로 인해 교착 상태가 발생합니다.

지정된 잠금 또는 모니터를 기다리는 동안 실행 스레드가 차단되도록합니다. 목적 .



자바의 교착 상태-Edureka

교착 상태 예

public class Example {public static void main (String [] args) {final String r1 = 'edureka'final String r2 = 'java'Thread t1 = new Thread () {public void run () {synchronous (r1) {System. out.println ( 'Thread 1 : Locked r1') try {Thread.sleep (100)} catch (exception e) {} synchronous (r2) {System.out.println ( 'Thread 1 : Locked r2')}}} } 스레드 t2 = new Thread () {public void run () {synchronous (r1) {System.out.println ( 'Thread 2 : Locked r1') try {Thread.sleep (100)} catch (exception e) {} 동기화 됨 (r2) {System.out.println ( '스레드 2 : 잠금 r2')}}}} t1.start () t2.start ()}}
 산출: 스레드 1 : 잠금 r1 스레드 2 : 잠금 r2

Java에서 교착 상태를 피하는 방법?

교착 상태를 피하는 것이 완전히 가능하지는 않지만,이를 피하기 위해 특정 조치 나 지침을 따를 수 있습니다.

  • 중첩 된 잠금 방지 – 여러 스레드에 잠금을 제공하지 않아야합니다. 이것이 교착 상태의 주된 이유입니다. 일반적으로 여러 스레드에 잠금을 제공 할 때 발생합니다.

  • 불필요한 잠금 방지 – 잠금은 중요한 스레드에 제공되어야합니다. 교착 상태를 유발하는 불필요한 스레드에 잠금을 제공합니다.



  • 스레드 결합 사용 – 교착 상태는 일반적으로 한 스레드가 다른 스레드가 완료되기를 기다리고있을 때 발생합니다. 이 경우 스레드에 걸리는 최대 시간으로 Thread.join을 사용할 수 있습니다.

이것으로 Java의 교착 상태와이를 방지하는 방법에 대해 배운이 기사의 끝으로 이동합니다. 이 튜토리얼에서 여러분과 공유 한 모든 내용이 명확하기를 바랍니다.

'Deadlock In Java'관련 기사를 찾았다면 다음을 확인하십시오. 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사입니다.

우리는 여정의 모든 단계에서 귀하를 돕고 Java 개발자가 되고자하는 학생과 전문가를 위해 설계된 커리큘럼을 마련합니다. 이 과정은 Java 프로그래밍을 시작하고 다양한 Java 개념과 함께 핵심 및 고급 Java 개념을 교육하도록 설계되었습니다. 처럼 최대 절전 모드 & .

질문이 있으시면 'Deadlock In Java'의 댓글 섹션에있는 모든 질문에 자유롭게 질문하시면 저희 팀이 기꺼이 답변 해 드리겠습니다.