Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java의 스레드 간섭 오류

<시간/>

스레드 간섭 오류의 개념을 이해하기 위한 예를 살펴보겠습니다. -

예시

import java.io.*;
class Demo_instance{
   static int val_1 = 6;
   void increment_val(){
      for(int j=1;j<11;j++){
         val_1 = val_1 + 1;
         System.out.println("The value of i after incrementing it is "+val_1);
      }
   }
   void decrement_val(){
      for(int j=1;j<11;j++){
         val_1 = val_1 - 1;
         System.out.println("The value of i after decrementing it is "+val_1);
      }
   }
}
public class Demo{
   public static void main(String[] args){
      System.out.println("Instance of Demo_instance created");
      System.out.println("Thread instance created");
      final Demo_instance my_inst = new Demo_instance();
      Thread my_thread_1 = new Thread(){
         @Override
         public void run(){
            my_inst.increment_val();
         }
      };
      Thread my_thread_2 = new Thread(){
         @Override
         public void run(){
            my_inst.decrement_val();
         }
      };
      my_thread_1.start();
      my_thread_2.start();
   }
}

출력

Instance of Demo_instance created
Thread instance created
The value of i after incrementing it is 7
The value of i after incrementing it is 7
The value of i after decrementing it is 6
The value of i after incrementing it is 8
The value of i after decrementing it is 7
The value of i after incrementing it is 8
The value of i after incrementing it is 8
The value of i after decrementing it is 7
The value of i after incrementing it is 9
The value of i after decrementing it is 8
The value of i after decrementing it is 7
The value of i after decrementing it is 6
The value of i after decrementing it is 5
The value of i after decrementing it is 4
The value of i after decrementing it is 3
The value of i after decrementing it is 2
The value of i after incrementing it is 3
The value of i after incrementing it is 4
The value of i after incrementing it is 5
The value of i after incrementing it is 6

'Demo_instance'라는 클래스는 정적 값을 정의하고 void 함수 'increment_val'은 일련의 숫자를 반복하고 이를 증가시켜 콘솔에 표시합니다. 'decrement_val'이라는 또 다른 함수는 일련의 숫자를 반복하고 매번 감소하고 콘솔에 출력을 표시합니다.

Demo라는 클래스에는 해당 클래스의 인스턴스를 생성하고 새 스레드를 생성하는 메인 함수가 포함되어 있습니다. 이 스레드는 재정의되고 이 개체 인스턴스에서 실행 기능이 호출됩니다. 두 번째 스레드에도 동일한 작업이 수행됩니다. 이 두 스레드는 모두 '시작' 함수로 호출됩니다.