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 มีฟังก์ชันหลักที่สร้างอินสแตนซ์ของคลาส และสร้างเธรดใหม่ เธรดนี้ถูกแทนที่ และมีการเรียกใช้ฟังก์ชันการทำงานบนอินสแตนซ์อ็อบเจ็กต์นี้ ทำสิ่งเดียวกันสำหรับเธรดที่สองด้วย เธรดทั้งสองนี้จะถูกเรียกด้วยฟังก์ชัน 'start'