CodeGym /ื‘ืœื•ื’ Java /Random-HE /ื‘ื—ื™ื ืช ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืœืžืฉืจืช ืžืคืชื— Java. ื—ืœืง 12
John Squirrels
ืจึธืžึธื”
San Francisco

ื‘ื—ื™ื ืช ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืœืžืฉืจืช ืžืคืชื— Java. ื—ืœืง 12

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ื”ื™ื™! ื™ื“ืข ื”ื•ื ื›ื•ื—. ื›ื›ืœ ืฉื™ื”ื™ื” ืœืš ื™ื•ืชืจ ื™ื“ืข ื‘ืจืื™ื•ืŸ ื”ืจืืฉื•ืŸ ืฉืœืš, ื›ืš ืชืจื’ื™ืฉ ื™ื•ืชืจ ื‘ื˜ื•ื—. ื‘ื—ื™ื ืช ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืœืžืฉืจืช ืžืคืชื— Java.  ื—ืœืง 12 - 1ืื ืชื‘ื™ืื• ืžื•ื— ื’ื“ื•ืœ ื•ืžืœื ื™ื“ืข, ื”ืžืจืื™ื™ืŸ ืฉืœื›ื ื™ืชืงืฉื” ืœื‘ืœื‘ืœ ืืชื›ื ื•ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื”ื•ื ื™ื•ืคืชืข ืœื˜ื•ื‘ื”. ืื– ืœืœื ืขื™ื›ื•ื‘ื™ื ื ื•ืกืคื™ื, ื”ื™ื•ื ื ืžืฉื™ืš ืœื—ื–ืง ืืช ื”ื‘ืกื™ืก ื”ืชื™ืื•ืจื˜ื™ ืฉืœืš ืขืœ ื™ื“ื™ ืกืงื™ืจืช ืฉืืœื•ืช ืœืžืคืชื— Java.

103. ืื™ืœื• ื›ืœืœื™ื ื—ืœื™ื ืขืœ ื‘ื“ื™ืงืช ื—ืจื™ื’ื™ื ื‘ืžื”ืœืš ื”ื™ืจื•ืฉื”?

ืื ืื ื™ ืžื‘ื™ืŸ ื ื›ื•ืŸ ืืช ื”ืฉืืœื”, ื”ื ืฉื•ืืœื™ื ืœื’ื‘ื™ ื›ืœืœื™ื ืœืขื‘ื•ื“ื” ืขื ื—ืจื™ื’ื™ื ื‘ื–ืžืŸ ื™ืจื•ืฉื”. ื”ื›ืœืœื™ื ื”ืจืœื•ื•ื ื˜ื™ื™ื ื”ื ื›ื“ืœืงืžืŸ:
  • ืฉื™ื˜ื” ืฉื“ืจืกื” ืื• ืžื™ื•ืฉืžืช ื‘ืฆืืฆื/ื™ื™ืฉื•ื ืœื ื™ื›ื•ืœื” ืœื–ืจื•ืง ื—ืจื™ื’ื™ื ืžืกื•ืžื ื™ื ืฉื”ื ื’ื‘ื•ื”ื™ื ื™ื•ืชืจ ื‘ื”ื™ืจืจื›ื™ื” ืžืืฉืจ ื—ืจื™ื’ื™ื ื‘ืฉื™ื˜ืช superclass/ืžืžืฉืง.
ืœื“ื•ื’ืžื”, ื ื ื™ื— ืฉื™ืฉ ืœื ื• ืžืžืฉืง ืžืกื•ื’ Animal ืขื ืฉื™ื˜ื” ืฉื–ื•ืจืงืช IOException :
public interface Animal {
   void speak() throws IOException;
}
ื‘ืขืช ื”ื˜ืžืขืช ืžืžืฉืง ื–ื”, ืื™ื ื ื• ื™ื›ื•ืœื™ื ืœื—ืฉื•ืฃ ื—ืจื™ื’ ื›ืœืœื™ ื™ื•ืชืจ ืฉื ื™ืชืŸ ืœื–ืจื•ืง (ืœืžืฉืœ Exception , Throwable ), ืืš ืื ื• ื™ื›ื•ืœื™ื ืœื”ื—ืœื™ืฃ ืืช ื”ื—ืจื™ื’ ื”ืงื™ื™ื ื‘ืชืช-ืžื—ืœืงื”, ื›ื’ื•ืŸ FileNotFoundException :
public class Cat implements Animal {
   @Override
   public void speak() throws FileNotFoundException {
// Some implementation
   }
}
  • ืคืกืงืช ื”ื”ืฉืœื›ื•ืช ืฉืœ ื‘ื ืื™ ื”ืžืฉื ื” ื—ื™ื™ื‘ืช ืœื›ืœื•ืœ ืืช ื›ืœ ืžื—ืœืงื•ืช ื”ื—ืจื™ื’ ืฉื ื–ืจืงื• ืขืœ ื™ื“ื™ ื‘ื ืื™ ืžื—ืœืงื•ืช ื”ืขืœ ืฉื ืงืจื ืœื™ืฆื•ืจ ืืช ื”ืื•ื‘ื™ื™ืงื˜.
ื ื ื™ื— ืฉื”ืงื•ื ืกื˜ืจื•ืงื˜ื•ืจ ืฉืœ ื”ืžื—ืœืงื” Animal ื–ื•ืจืง ื”ืจื‘ื” ื—ืจื™ื’ื™ื:
public class Animal {
  public Animal() throws ArithmeticException, NullPointerException, IOException {
  }
ืื– ื‘ื ืื™ ืžืฉื ื” ื—ื™ื™ื‘ ื’ื ืœื–ืจื•ืง ืื•ืชื:
public class Cat extends Animal {
   public Cat() throws ArithmeticException, NullPointerException, IOException {
       super();
   }
ืœื—ืœื•ืคื™ืŸ, ื›ืžื• ื‘ืฉื™ื˜ื•ืช, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ื—ืจื™ื’ื™ื ืฉื•ื ื™ื, ื›ืœืœื™ื™ื ื™ื•ืชืจ. ื‘ืžืงืจื” ืฉืœื ื•, ืื ื• ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ Exception , ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ื›ืœืœื™ ื™ื•ืชืจ ื•ื”ื•ื ืื‘ ืงื“ืžื•ืŸ ืžืฉื•ืชืฃ ืœื›ืœ ืฉืœื•ืฉืช ื”ื—ืจื™ื’ื™ื ื”ืžืฆื•ื™ื ื™ื ื‘ืžืขืžื“ ื”ืขืœ:
public class Cat extends Animal {
   public Cat() throws Exception {
       super();
   }

104. ื”ืื ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืื™ื–ื” ืงื•ื“ ืฉื‘ื• ื”ื‘ืœื•ืง ื”ืกื•ืคื™ ืœื ืžื‘ื•ืฆืข?

ืจืืฉื™ืช, ื‘ื•ืื• ื ื–ื›ื•ืจ ืžื” ื–ื” ืกื•ืฃ ืกื•ืฃ . ืงื•ื“ื ืœื›ืŸ, ื‘ื“ืงื ื• ืืช ืžื ื’ื ื•ืŸ ืชืคื™ืกืช ื”ื—ืจื™ื’ื™ื: ื‘ืœื•ืง try ืžืฆื™ื™ืŸ ื”ื™ื›ืŸ ื™ื™ืชืคืกื• ื—ืจื™ื’ื™ื, ื•ื‘ืœื•ืง (ื™ื) ืฉืœ ืชืคื™ืกื” ื”ื ื”ืงื•ื“ ืฉื™ื•ืคืขืœ ื›ืืฉืจ ื—ืจื™ื’ ืชื•ืื ื ืชืคืก. ื’ื•ืฉ ืงื•ื“ ืฉืœื™ืฉื™ ื”ืžืกื•ืžืŸ ืขืœ ื™ื“ื™ ืžื™ืœืช ื”ืžืคืชื— finally ื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ ืื• ืœื‘ื•ื ืื—ืจื™ ืงื•ื‘ื™ื•ืช ื”-catch. ื”ืจืขื™ื•ืŸ ืžืื—ื•ืจื™ ื”ื‘ืœื•ืง ื”ื–ื” ื”ื•ื ืฉื”ืงื•ื“ ืฉืœื• ืชืžื™ื“ ืžื‘ื•ืฆืข ืœืœื ืงืฉืจ ืœืžื” ืฉืงื•ืจื” ื‘- try or catch block (ืœืœื ืงืฉืจ ืื ื™ืฉ ื—ืจื™ื’ ืื• ืœื). ืžืงืจื™ื ืฉื‘ื”ื ื”ื‘ืœื•ืง ื”ื–ื” ืœื ืžื‘ื•ืฆืข ื”ื ื ื“ื™ืจื™ื ื•ื”ื ื—ืจื™ื’ื™ื. ื”ื“ื•ื’ืžื” ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ื”ื™ื ื›ืืฉืจ System.exit(0) ื ืงืจื ืœืคื ื™ ื”ื—ืกื™ืžื” ื”ืกื•ืคื™ืช, ื•ื‘ื›ืš ืžืคืกื™ืง ืืช ื”ืชื•ื›ื ื™ืช:
try {
   throw new IOException();
} catch (IOException e) {
   System.exit(0);
} finally {
   System.out.println("This message will not be printed on the console");
}
ื™ืฉื ื ื’ื ื›ืžื” ืžืฆื‘ื™ื ืื—ืจื™ื ืฉื‘ื”ื ื”ื—ืกื™ืžื” ื”ืกื•ืคื™ืช ืœื ืชืคืขืœ:
  • ืœื“ื•ื’ืžื”, ื”ืคืกืงืช ืชื•ื›ื ื™ืช ืœื ืชืงื™ื ื” ื”ื ื’ืจืžืช ืขืœ ื™ื“ื™ ืฉื’ื™ืื•ืช ืงืจื™ื˜ื™ื•ืช ื‘ืžืขืจื›ืช, ืื• ืฉื’ื™ืื” ื›ืœืฉื”ื™ ืฉื’ื•ืจืžืช ืœืืคืœื™ืงืฆื™ื” ืœืงืจื•ืก (ืœื“ื•ื’ืžื”, StackOverflowError , ื”ืžืชืจื—ืฉืช ื›ืืฉืจ ืžื—ืกื ื™ืช ื”ืืคืœื™ืงืฆื™ื” ืขื•ืœื” ืขืœ ื’ื“ื•ืชื™ื”).

  • ืžืฆื‘ ืื—ืจ ื”ื•ื ื›ืฉืฉืจืฉื•ืจ ื“ืžื•ืŸ ื ื›ื ืก ืœื‘ืœื•ืง ืฉืœ ื ื™ืกื™ื•ืŸ-ืกื•ืฃ , ืื‘ืœ ืื– ืžืกืชื™ื™ื ื”ืฉืจืฉื•ืจ ื”ืจืืฉื™ ืฉืœ ื”ืชื•ื›ื ื™ืช. ืื—ืจื™ ื”ื›ืœ, ืฉืจืฉื•ืจื™ daemon ืžื™ื•ืขื“ื™ื ืœืขื‘ื•ื“ืช ืจืงืข ืฉืื™ื ื” ื‘ืขื“ื™ืคื•ืช ื’ื‘ื•ื”ื” ืื• ื—ื•ื‘ื”, ื›ืš ืฉื”ื™ื™ืฉื•ื ืœื ื™ื—ื›ื” ืœืกื™ื•ื.

  • ื”ื“ื•ื’ืžื” ื”ื›ื™ ื—ืกืจืช ื“ืขืช ื”ื™ื ืœื•ืœืื” ืื™ื ืกื•ืคื™ืช ื‘ืชื•ืš ื‘ืœื•ืง ื ืกื™ื•ืŸ ืื• ืชืคื•ืก - ื‘ืจื’ืข ืฉื ื›ื ืก ืืœื™ื•, ื—ื•ื˜ ื™ื”ื™ื” ืชืงื•ืข ืฉื ืœื ืฆื—:

    try {
       while (true) {
       }
    } finally {
       System.out.println("This message will not be printed on the console");
    }
ืฉืืœื” ื–ื• ืคื•ืคื•ืœืจื™ืช ืžืื•ื“ ื‘ืจืื™ื•ื ื•ืช ืœืžืคืชื—ื™ื ื–ื•ื˜ืจื™ื, ืœื›ืŸ ืžื•ืžืœืฅ ืœื–ื›ื•ืจ ื›ืžื” ืžื”ืžืฆื‘ื™ื ื”ื—ืจื™ื’ื™ื ื”ืœืœื•. ื‘ื—ื™ื ืช ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืœืžืฉืจืช ืžืคืชื— Java.  ื—ืœืง 12 - 2

105. ื›ืชื•ื‘ ื“ื•ื’ืžื” ืฉื‘ื” ืืชื” ืžื˜ืคืœ ื‘ื—ืจื™ื’ื™ื ืžืจื•ื‘ื™ื ื‘ื‘ืœื•ืง ืชื•ืคืก ื™ื—ื™ื“.

1) ืื ื™ ืœื ื‘ื˜ื•ื— ืฉื”ืฉืืœื” ื”ื–ื• ื ืฉืืœื” ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ืœืžื™ื˜ื‘ ื”ื‘ื ืชื™, ื”ืฉืืœื” ื”ื–ื• ืžืชื™ื™ื—ืกืช ืœืžืกืคืจ ื‘ืœื•ืงื™ื ืฉืœ ืชืคื™ืกื” ื•ื ื™ืกื™ื•ืŸ ื‘ื•ื“ื“ :
try {
  throw new FileNotFoundException();
} catch (FileNotFoundException e) {
   System.out.print("Oops! There was an exception: " + e);
} catch (IOException e) {
   System.out.print("Oops! There was an exception: " + e);
} catch (Exception e) {
   System.out.print("Oops! There was an exception: " + e);
}
ืื ื ื–ืจืง ื—ืจื™ื’ ื‘ื‘ืœื•ืง ื ื™ืกื™ื•ืŸ , ืื– ื‘ืœื•ืงื™ ื”- catch ื”ืงืฉื•ืจื™ื ืžื ืกื™ื ืœืชืคื•ืก ืื•ืชื•, ื‘ืจืฆืฃ ืžืœืžืขืœื” ืœืžื˜ื”. ื‘ืจื’ืข ืฉื”ื—ืจื™ื’ ืชื•ืื ืœืื—ื“ ืžื‘ืœื•ืง ื”-catch , ื›ืœ ื”ื‘ืœื•ืงื™ื ืฉื ื•ืชืจื• ืœื ื™ื•ื›ืœื• ืขื•ื“ ืœืชืคื•ืก ื•ืœื˜ืคืœ ื‘ื•. ื›ืœ ื–ื” ืื•ืžืจ ืฉื—ืจื™ื’ื™ื ืฆืจื™ื ื™ื•ืชืจ ืžืกื•ื“ืจื™ื ืžืขืœ ื—ืจื™ื’ื™ื ื›ืœืœื™ื™ื ื™ื•ืชืจ ื‘ืงื‘ื•ืฆืช ื‘ืœื•ืงื™ ื”ืชืคืก . ืœื“ื•ื’ืžื”, ืื ื‘ืœื•ืง ื”-catch ื”ืจืืฉื•ืŸ ืฉืœื ื• ืชื•ืคืก ืืช ื”ืžื—ืœืงื” Exception , ืื– ื›ืœ ื”ื‘ืœื•ืงื™ื ื”ื‘ืื™ื ืœื ื™ืชืคืกื• ื—ืจื™ื’ื™ื ืžืกื•ืžื ื™ื (ื›ืœื•ืžืจ, ื‘ืœื•ืงื™ื ืฉื ื•ืชืจื• ืขื ืชืช-ืžื—ืœืงื•ืช ืฉืœ Exception ื™ื”ื™ื• ื—ืกืจื™ ืชื•ืขืœืช ืœื—ืœื•ื˜ื™ืŸ). 2) ืื• ืฉืื•ืœื™ ื”ืฉืืœื” ื ืฉืืœื” ื‘ืฆื•ืจื” ื ื›ื•ื ื”. ื‘ืžืงืจื” ื›ื–ื”, ื ื•ื›ืœ ืœื˜ืคืœ ื‘ื—ืจื™ื’ื™ื ื‘ืื•ืคืŸ ื”ื‘ื:
try {
  throw new NullPointerException();
} catch (Exception e) {
   if (e instanceof FileNotFoundException) {
       // Some handling that involves a narrowing type conversion: (FileNotFoundException)e
   } else if (e instanceof ArithmeticException) {
       // Some handling that involves a narrowing type conversion: (ArithmeticException)e
   } else if(e instanceof NullPointerException) {
       // Some handling that involves a narrowing type conversion: (NullPointerException)e
   }
ืœืื—ืจ ืฉื™ืžื•ืฉ ื‘-catch ื›ื“ื™ ืœืชืคื•ืก ื—ืจื™ื’, ืื ื• ืžื ืกื™ื ืœื’ืœื•ืช ืืช ื”ืกื•ื’ ื”ืกืคืฆื™ืคื™ ืฉืœื• ื‘ืืžืฆืขื•ืช ื”ืื•ืคืจื˜ื•ืจ instanceof , ืฉื‘ื•ื“ืง ื”ืื ืื•ื‘ื™ื™ืงื˜ ืฉื™ื™ืš ืœืกื•ื’ ืžืกื•ื™ื. ื–ื” ืžืืคืฉืจ ืœื ื• ืœื‘ืฆืข ื‘ื‘ื™ื˜ื—ื•ืŸ ื”ืžืจื” ืžืกื•ื’ ืฆืžืฆื•ื ืœืœื ื—ืฉืฉ ืžื”ืฉืœื›ื•ืช ืฉืœื™ืœื™ื•ืช. ื ื•ื›ืœ ืœื™ื™ืฉื ื›ืœ ืื—ืช ืžื”ืฉื™ื˜ื•ืช ื‘ืื•ืชื• ืžืฆื‘. ื”ื‘ืขืชื™ ืกืคืง ืœื’ื‘ื™ ื”ืฉืืœื” ืจืง ื›ื™ ืœื ื”ื™ื™ืชื™ ืงื•ืจื ืœืืคืฉืจื•ืช ื”ืฉื ื™ื™ื” ื’ื™ืฉื” ื˜ื•ื‘ื”. ืžื ื™ืกื™ื•ื ื™, ืžืขื•ืœื ืœื ื ืชืงืœืชื™ ื‘ื–ื”, ื•ื”ื’ื™ืฉื” ื”ืจืืฉื•ื ื” ื”ื›ื•ืœืœืช ืžืกืคืจ ื‘ืœื•ืงื™ื ืœืชืคื•ืก ื”ื™ื ื ืคื•ืฆื”.

106. ืื™ื–ื” ืžืคืขื™ืœ ืžืืคืฉืจ ืœืš ืœืืœืฅ ืœื–ืจื•ืง ื—ืจื™ื’? ื›ืชื‘ื• ื“ื•ื’ืžื”

ื›ื‘ืจ ื”ืฉืชืžืฉืชื™ ื‘ื• ื›ืžื” ืคืขืžื™ื ื‘ื“ื•ื’ืžืื•ืช ืœืžืขืœื”, ืื‘ืœ ืื—ื–ื•ืจ ืขืœ ื–ื” ืฉื•ื‘: ืžื™ืœืช ื”ืžืคืชื— ืœื–ืจื•ืง . ื“ื•ื’ืžื” ืœื–ืจื™ืงื” ื™ื“ื ื™ืช ืฉืœ ื—ืจื™ื’:
throw new NullPointerException();

107. ื”ืื ื”ืฉื™ื˜ื” ื”ืจืืฉื™ืช ื™ื›ื•ืœื” ืœื–ืจื•ืง ื—ืจื™ื’? ืื ื›ืŸ, ืื– ืœืืŸ ื–ื” ื”ื•ืœืš?

ืงื•ื“ื ื›ืœ, ืื ื™ ืจื•ืฆื” ืœืฆื™ื™ืŸ ืฉื”ืฉื™ื˜ื” ื”ืขื™ืงืจื™ืช ื”ื™ื ืœื ื™ื•ืชืจ ืžืฉื™ื˜ื” ืจื’ื™ืœื”. ื›ืŸ, ื”ื•ื ื ืงืจื ืขืœ ื™ื“ื™ ื”ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช ื›ื“ื™ ืœื”ืชื—ื™ืœ ื‘ื‘ื™ืฆื•ืข ืฉืœ ืชื•ื›ื ื™ืช, ืืš ืžืขื‘ืจ ืœื›ืš, ื ื™ืชืŸ ืœืงืจื•ื ืœื• ืžื›ืœ ืงื•ื“ ืื—ืจ. ืคื™ืจื•ืฉ ื”ื“ื‘ืจ ืฉื”ื•ื ื’ื ื›ืคื•ืฃ ืœื›ืœืœื™ื ื”ืจื’ื™ืœื™ื ืœื’ื‘ื™ ืฆื™ื•ืŸ ื—ืจื™ื’ื™ื ืžืกื•ืžื ื™ื ืœืื—ืจ ืžื™ืœืช ื”ืžืคืชื— ื–ืจื™ืงื” :
public static void main(String[] args) throws IOException {
ื‘ื”ืชืื, ื–ื” ื™ื›ื•ืœ ืœื–ืจื•ืง ื—ืจื™ื’ื™ื. ื›ืืฉืจ main ื ืงืจืืช ื›ื ืงื•ื“ืช ื”ื”ืชื—ืœื” ืฉืœ ื”ืชื•ื›ื ื™ืช (ื•ืœื ืขืœ ื™ื“ื™ ืฉื™ื˜ื” ืื—ืจืช), ืื– ื›ืœ ื—ืจื™ื’ ืฉื”ื™ื ื–ื•ืจืงืช ื™ื˜ื•ืคืœ ืขืœ ื™ื“ื™ UncaughtExceptionHandler . ืœื›ืœ ืฉืจืฉื•ืจ ื™ืฉ ืžื˜ืคืœ ืื—ื“ ื›ื–ื” (ื›ืœื•ืžืจ ื™ืฉ ืžื˜ืคืœ ืื—ื“ ื›ื–ื” ื‘ื›ืœ ืฉืจืฉื•ืจ). ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืžื˜ืคืœ ืžืฉืœืš ื•ืœื”ื’ื“ื™ืจ ืื•ืชื• ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœ-public static void main(String[] args) ื–ื•ืจืง IOException {setDefaultUncaughtExceptionHandler ื‘ืฉื™ื˜ื” ืฆื™ื‘ื•ืจื™ืช ืกื˜ื˜ื™ืช void main(String[] args) ื–ื•ืจืง IOException {Thread object.

ืจื™ื‘ื•ื™ ื”ืฉืจืฉื•ืจื™ื

ื‘ื—ื™ื ืช ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืœืžืฉืจืช ืžืคืชื— Java.  ื—ืœืง 12 - 3

108. ืื™ืœื• ืžื ื’ื ื•ื ื™ื ืœืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื” ืžืจื•ื‘ืช ื—ื•ื˜ื™ื ืืชื” ืžื›ื™ืจ?

ื”ืžื ื’ื ื•ื ื™ื ื”ื‘ืกื™ืกื™ื™ื ืœืจื™ื‘ื•ื™ ืฉืจืฉื•ืจื™ื ื‘-Java ื”ื:
  • ืžื™ืœืช ื”ืžืคืชื— ื”ืžืกื•ื ื›ืจื ืช , ืฉื”ื™ื ื“ืจืš ืฉืœ ืฉืจืฉื•ืจ ืœื ืขื•ืœ ืฉื™ื˜ื”/ื—ืกื™ืžื” ื›ืฉื”ื•ื ื ื›ื ืก, ื•ืœืžื ื•ืข ื›ื ื™ืกืช ืฉืจืฉื•ืจื™ื ืื—ืจื™ื.

  • ืžื™ืœืช ื”ืžืคืชื— ื”ื”ืคื›ืคื›ื” ืžื‘ื˜ื™ื—ื” ื’ื™ืฉื” ืขืงื‘ื™ืช ืœืžืฉืชื ื” ืฉืืœื™ื• ื ื™ื’ืฉื™ื ืฉืจืฉื•ืจื™ื ืฉื•ื ื™ื. ื›ืœื•ืžืจ, ื›ืืฉืจ ื”ืฉื™ื ื•ื™ ื”ื–ื” ืžื•ื—ืœ ืขืœ ืžืฉืชื ื”, ื›ืœ ื”ืคืขื•ืœื•ืช ืœื”ืงืฆืื” ื•ืœืงืจื™ืืช ื”ืžืฉืชื ื” ื”ื•ืคื›ื•ืช ืœืื˜ื•ืžื™ื•ืช. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื”ืฉืจืฉื•ืจื™ื ืœื ื™ืขืชื™ืงื• ืืช ื”ืžืฉืชื ื” ืœื–ื™ื›ืจื•ืŸ ื”ืžืงื•ืžื™ ืฉืœื”ื ื•ื™ืฉื ื• ืื•ืชื•. ื”ื ื™ืฉื ื• ืืช ืขืจื›ื• ื”ืžืงื•ืจื™.

  • ื ื™ืชืŸ ืœื”ืจืฆื” - ืื ื• ื™ื›ื•ืœื™ื ืœื™ื™ืฉื ืืช ื”ืžืžืฉืง ื”ื–ื” (ืฉืžื•ืจื›ื‘ ืžืฉื™ื˜ืช run() ืื—ืช ) ื‘ืžื—ืœืงื” ื›ืœืฉื”ื™:

    public class CustomRunnable implements Runnable {
       @Override
       public void run() {
           // Some logic
       }
    }

    ื•ื‘ืจื’ืข ืฉืื ื• ื™ื•ืฆืจื™ื ืื•ื‘ื™ื™ืงื˜ ืฉืœ ื”ืžื—ืœืงื” ื”ื–ื•, ื ื•ื›ืœ ืœื”ืชื—ื™ืœ ืฉืจืฉื•ืจ ื—ื“ืฉ ืขืœ ื™ื“ื™ ื”ืขื‘ืจืช ื”ืื•ื‘ื™ื™ืงื˜ ืฉืœื ื• ืœื‘ื ืื™ Thread ื•ืื– ืงืจื™ืื” ืœืžืชื•ื“ื” start() :

    Runnable runnable = new CustomRunnable();
    new Thread(runnable).start();

    ืฉื™ื˜ืช start ืžืคืขื™ืœื” ืืช ืฉื™ื˜ืช run() ื”ืžื™ื•ืฉื ื‘ืฉืจืฉื•ืจ ื ืคืจื“.

  • ืฉืจืฉื•ืจ - ืื ื• ื™ื›ื•ืœื™ื ืœืจืฉืช ืืช ื”ืžื—ืœืงื” ื”ื–ื• ื•ืœืขืงื•ืฃ ืืช ืฉื™ื˜ืช ื”ืจื™ืฆื” ืฉืœื” :

    public class CustomThread extends Thread {
       @Override
       public void run() {
           // Some logic
       }
    }

    ื ื•ื›ืœ ืœื”ืชื—ื™ืœ ืฉืจืฉื•ืจ ื—ื“ืฉ ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ ืžื”ืžื—ืœืงื” ื”ื–ื• ื•ืœืื—ืจ ืžื›ืŸ ืงืจื™ืื” ืœืžืชื•ื“ื” start() :

    new CustomThread().start();

  • ื‘ืžืงื‘ื™ืœ - ื–ื•ื”ื™ ื—ื‘ื™ืœืช ื›ืœื™ื ืœืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื” ืžืจื•ื‘ืช ื”ืœื™ื›ื™ื.

    ื–ื” ืžื•ืจื›ื‘ ืž:

    • ืื•ืกืคื™ื ื‘ืžืงื‘ื™ืœ - ื–ื”ื• ืื•ืกืฃ ืฉืœ ืื•ืกืคื™ื ืฉื ื•ืฆืจื• ื‘ืžืคื•ืจืฉ ืœืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื” ืžืจื•ื‘ืช ื”ืœื™ื›ื™.

    • ืชื•ืจื™ื - ืชื•ืจื™ื ืžื™ื•ื—ื“ื™ื ืขื‘ื•ืจ ืกื‘ื™ื‘ื” ืžืจื•ื‘ื” ื”ืœื™ื›ื™ (ื—ืกื™ืžื” ื•ืœื ื—ื•ืกืžืช).

    • ืกื™ื ื›ืจื•ื ื™ื–ืจื™ื - ืืœื• ื”ื ื›ืœื™ ืขื–ืจ ืžื™ื•ื—ื“ื™ื ืœืขื‘ื•ื“ื” ื‘ืกื‘ื™ื‘ื” ืžืจื•ื‘ืช ื”ืœื™ื›ื™.

    • ืžื‘ืฆืขื™ื - ืžื ื’ื ื•ื ื™ื ืœื™ืฆื™ืจืช ื‘ืจื™ื›ื•ืช ื—ื•ื˜ื™ื.

    • ืžื ืขื•ืœื™ื - ืžื ื’ื ื•ื ื™ ืกื ื›ืจื•ืŸ ืฉืจืฉื•ืจ ื’ืžื™ืฉื™ื ื™ื•ืชืจ ืžื”ืกื˜ื ื“ืจื˜ื™ื (ืžืกื•ื ื›ืจืŸ, ื”ืžืชืŸ, ื”ื•ื“ืข, ื”ื•ื“ืข ื”ื›ืœ).

    • Atomics - ืฉื™ืขื•ืจื™ื ืžื•ืชืืžื™ื ืœืจื™ื‘ื•ื™ ื”ืฉื—ืœื•ืช. ื›ืœ ืื—ืช ืžื”ืคืขื•ืœื•ืช ืฉืœื”ื ื”ื™ื ืื˜ื•ืžื™ืช.

109. ืกืคืจ ืœื ื• ืขืœ ืกื ื›ืจื•ืŸ ื‘ื™ืŸ ืฉืจืฉื•ืจื™ื. ืœืžื” ืžื™ื•ืขื“ื•ืช ื”ืžืชื•ื“ื•ืช wait(), notify(), notifyAll() ื•-join()?

ืกื ื›ืจื•ืŸ ื‘ื™ืŸ ืฉืจืฉื•ืจื™ื ื”ื•ื ืขืœ ืžื™ืœืช ื”ืžืคืชื— ื”ืžืกื•ื ื›ืจื ืช . ื ื™ืชืŸ ืœืžืงื ืืช ื”ืฉื™ื ื•ื™ ื”ื–ื” ื™ืฉื™ืจื•ืช ืขืœ ื”ื‘ืœื•ืง:
synchronized (Main.class) {
   // Some logic
}
ืื• ื™ืฉื™ืจื•ืช ื‘ื—ืชื™ืžืช ื”ืฉื™ื˜ื”:
public synchronized void move() {
   // Some logic }
ื›ืคื™ ืฉืืžืจืชื™ ืงื•ื“ื, ืกื™ื ื›ืจื•ืŸ ื”ื•ื ืžื ื’ื ื•ืŸ ืœื ืขื™ืœื” ืฉืœ ื‘ืœื•ืง/ืฉื™ื˜ื” ืœืฉืจืฉื•ืจื™ื ืื—ืจื™ื ื‘ืจื’ืข ืฉื ื›ื ืก ื—ื•ื˜ ืื—ื“. ื‘ื•ืื• ื ื—ืฉื•ื‘ ืขืœ ื‘ืœื•ืง/ืฉื™ื˜ื” ืงื•ื“ ื›ื—ื“ืจ. ื—ื•ื˜ ื›ืœืฉื”ื• ื ื™ื’ืฉ ืœื—ื“ืจ, ื ื›ื ืก ืืœื™ื• ื•ื ื•ืขืœ ืืช ื”ื“ืœืช ื‘ืžืคืชื— ืฉืœื•. ื›ืฉื—ื•ื˜ื™ื ืื—ืจื™ื ืžืชืงืจื‘ื™ื ืœื—ื“ืจ, ื”ื ืจื•ืื™ื ืฉื”ื“ืœืช ื ืขื•ืœื” ื•ืžืžืชื™ื ื™ื ื‘ืงืจื‘ืช ืžืงื•ื ืขื“ ืฉื”ื—ื“ืจ ื™ืชืคื ื”. ื‘ืจื’ืข ืฉื”ืคืชื™ืœ ื”ืจืืฉื•ืŸ ื ืขืฉื” ืขื ืขืกืงื™ื• ื‘ื—ื“ืจ, ื”ื•ื ืคื•ืชื— ืืช ื”ื“ืœืช, ื™ื•ืฆื ืžื”ื—ื“ืจ ื•ืžืฉื—ืจืจ ืืช ื”ืžืคืชื—. ื”ื–ื›ืจืชื™ ืžืคืชื— ื›ืžื” ืคืขืžื™ื ืžืกื™ื‘ื” - ื›ื™ ืžืฉื”ื• ืื ืœื•ื’ื™ ื‘ืืžืช ืงื™ื™ื. ื–ื”ื• ืื•ื‘ื™ื™ืงื˜ ืžื™ื•ื—ื“ ืฉื™ืฉ ืœื• ืžืฆื‘ ืชืคื•ืก/ื—ื•ืคืฉื™. ืœื›ืœ ืื•ื‘ื™ื™ืงื˜ ื‘-Java ื™ืฉ ืื•ื‘ื™ื™ืงื˜ ื›ื–ื”, ืื– ื›ืฉืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ื‘ืœื•ืง ื”ืžืกื•ื ื›ืจืŸ , ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืฉืชืžืฉ ื‘ืกื•ื’ืจื™ื™ื ื›ื“ื™ ืœืฆื™ื™ืŸ ืืช ื”ืื•ื‘ื™ื™ืงื˜ ืฉื”-mutex ืฉืœื• ื™ื”ื™ื” ื ืขื•ืœ:
Cat cat = new Cat();
synchronized (cat) {
   // Some logic
}
ืื ื—ื ื• ื™ื›ื•ืœื™ื ื’ื ืœื”ืฉืชืžืฉ ื‘-mutex ื”ืžืฉื•ื™ืš ืœืžื—ืœืงื”, ื›ืคื™ ืฉืขืฉื™ืชื™ ื‘ื“ื•ื’ืžื” ื”ืจืืฉื•ื ื” ( Main.class ). ืื—ืจื™ ื”ื›ืœ, ื›ืฉืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืกื ื›ืจื•ืŸ ืขืœ ืฉื™ื˜ื”, ืื ื—ื ื• ืœื ืžืฆื™ื™ื ื™ื ืืช ื”ืื•ื‘ื™ื™ืงื˜ ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื ืขื•ืœ, ื ื›ื•ืŸ? ื‘ืžืงืจื” ื–ื”, ืขื‘ื•ืจ ืฉื™ื˜ื•ืช ืœื ืกื˜ื˜ื™ื•ืช, ื”ืžื•ื˜ืงืก ืฉื™ื™ื ืขืœ ื”ื•ื ื”ืื•ื‘ื™ื™ืงื˜ ื”ื–ื” , ื›ืœื•ืžืจ ื”ืื•ื‘ื™ื™ืงื˜ ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืžื—ืœืงื”. ืขื‘ื•ืจ ืฉื™ื˜ื•ืช ืกื˜ื˜ื™ื•ืช, ื”-mutex ื”ืžืฉื•ื™ืš ืœืžื—ืœืงื” ื”ื ื•ื›ื—ื™ืช ( this.getClass(); ) ื ืขื•ืœ. wait() ื”ื™ื ืฉื™ื˜ื” ืฉืžืฉื—ืจืจืช ืืช ื”ืžื•ื˜ืงืก ื•ืžื›ื ื™ืกื” ืืช ื”ืฉืจืฉื•ืจ ื”ื ื•ื›ื—ื™ ืœืžืฆื‘ ื”ืžืชื ื”, ื›ืื™ืœื• ืžืชื—ื‘ืจืช ืœืžื•ื ื™ื˜ื•ืจ ื”ื ื•ื›ื—ื™ (ืžืฉื”ื• ื›ืžื• ืขื•ื’ืŸ). ื‘ืฉืœ ื›ืš, ื ื™ืชืŸ ืœืงืจื•ื ืœืฉื™ื˜ื” ื–ื• ืจืง ืžื‘ืœื•ืง ืื• ืฉื™ื˜ื” ืžืกื•ื ื›ืจื ื™ื . ืื—ืจืช, ืœืžื” ื–ื” ื”ื™ื” ืžื—ื›ื” ื•ืžื” ื™ืฉื•ื—ืจืจ?). ื›ืžื• ื›ืŸ, ืฉื™ื ืœื‘ ืฉื–ื• ืฉื™ื˜ื” ืฉืœ โ€‹โ€‹ื”ืžื—ืœืงื” Object . ื•ื‘ื›ืŸ, ืœื ืื—ื“, ืืœื ืฉืœื•ืฉื”:
  • wait() ืžื›ื ื™ืก ืืช ื”ืฉืจืฉื•ืจ ื”ื ื•ื›ื—ื™ ืœืžืฆื‘ ื”ืžืชื ื” ืขื“ ืฉืจืฉื•ืจ ืื—ืจ ื™ืงืจื ืœืฉื™ื˜ืช notify() ืื• notifyAll() ื‘ืื•ื‘ื™ื™ืงื˜ ื–ื” (ื ื“ื‘ืจ ืขืœ ื”ืฉื™ื˜ื•ืช ื”ืœืœื• ื‘ื”ืžืฉืš).

  • wait(ื–ืžืŸ ืงืฆื•ื‘ ืืจื•ืš) ืžื›ื ื™ืก ืืช ื”ืฉืจืฉื•ืจ ื”ื ื•ื›ื—ื™ ืœืžืฆื‘ ื”ืžืชื ื” ืขื“ ืฉืจืฉื•ืจ ืื—ืจ ื™ืงืจื ืœืฉื™ื˜ืช notify() ืื• notifyAll() ื‘ืื•ื‘ื™ื™ืงื˜ ื–ื” ืื• ืฉืคืจืง ื”ื–ืžืŸ ืฉืฆื•ื™ืŸ ืขืœ ื™ื“ื™ ื”ื–ืžืŸ ื”ืงืฆื•ื‘ ื™ืคื•ื’.

  • wait (ืคืกืง ื–ืžืŸ ืืจื•ืš, int nanos) ื”ื•ื ื›ืžื• ื”ืฉื™ื˜ื” ื”ืงื•ื“ืžืช, ืื‘ืœ ื›ืืŸ nanos ืžืืคืฉืจ ืœืš ืœืฆื™ื™ืŸ ื ื ื•-ืฉื ื™ื•ืช (ืคืกืง ื–ืžืŸ ืžื“ื•ื™ืง ื™ื•ืชืจ).

  • notify() ืžืืคืฉืจ ืœืš ืœื”ืขื™ืจ ืฉืจืฉื•ืจ ืืงืจืื™ ืื—ื“ ืฉืžื—ื›ื” ื‘ื‘ืœื•ืง ื”ืกื ื›ืจื•ืŸ ื”ื ื•ื›ื—ื™. ืฉื•ื‘, ื ื™ืชืŸ ืœืงืจื•ื ืœืฉื™ื˜ื” ื–ื• ืจืง ื‘ื‘ืœื•ืง ืื• ื‘ืฉื™ื˜ื” ืžืกื•ื ื›ืจื ืช (ืื—ืจื™ ื”ื›ืœ, ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื ืœื ื™ื”ื™ื” ืžื™ ืฉื™ืชืขื•ืจืจ).

  • notifyAll() ืžืขื•ืจืจ ืืช ื›ืœ ื”ืฉืจืฉื•ืจื™ื ื”ืžืžืชื™ื ื™ื ื‘ืฆื’ ื”ื ื•ื›ื—ื™ (ื’ื ื‘ืฉื™ืžื•ืฉ ืจืง ื‘ื‘ืœื•ืง ืื• ื‘ืฉื™ื˜ื” ืžืกื•ื ื›ืจื ื™ื ).

110. ืื™ืš ืขื•ืฆืจื™ื ืฉืจืฉื•ืจ?

ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉื™ืฉ ืœื•ืžืจ ื›ืืŸ ื”ื•ื ืฉื›ืืฉืจ ื”- run() ืคื•ืขืœ ืขื“ ืœืกื™ื•ืžื•, ื”ืฉืจืฉื•ืจ ืžืกืชื™ื™ื ืื•ื˜ื•ืžื˜ื™ืช. ืื‘ืœ ืœืคืขืžื™ื ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืจื•ื’ ืฉืจืฉื•ืจ ืœืคื ื™ ื”ืžื•ืขื“, ืœืคื ื™ ื”ืฉื™ื˜ื”. ืื– ืžื” ืื ื—ื ื• ืขื•ืฉื™ื? ืื•ืœื™ ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืฉื™ื˜ืช stop() ื‘ืื•ื‘ื™ื™ืงื˜ Thread ? ืœื! ืฉื™ื˜ื” ื–ื• ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ ื•ืขืฉื•ื™ื” ืœื’ืจื•ื ืœืงืจื™ืกื•ืช ืžืขืจื›ืช. ื‘ื—ื™ื ืช ืฉืืœื•ืช ื•ืชืฉื•ื‘ื•ืช ืžืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืœืžืฉืจืช ืžืคืชื— Java.  ื—ืœืง 12 - 4ื ื•, ืžื” ืื–? ื™ืฉื ืŸ ืฉืชื™ ื“ืจื›ื™ื ืœืขืฉื•ืช ื–ืืช: ืจืืฉื™ืช , ื”ืฉืชืžืฉ ื‘ื“ื’ืœ ื”ื‘ื•ืœื™ืื ื™ ื”ืคื ื™ืžื™ ืฉืœื•. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื”. ื™ืฉ ืœื ื• ื™ื™ืฉื•ื ืฉืœ ืฉืจืฉื•ืจ ืฉืืžื•ืจ ืœื”ืฆื™ื’ ื‘ื™ื˜ื•ื™ ืžืกื•ื™ื ืขืœ ื”ืžืกืš ืขื“ ืฉื”ืฉืจืฉื•ืจ ื™ื™ืคืกืง ืœื—ืœื•ื˜ื™ืŸ:
public class CustomThread extends Thread {
private boolean isActive;

   public CustomThread() {
       this.isActive = true;
   }

   @Override
   public void run() {
       {
           while (isActive) {
               System.out.println("The thread is executing some logic...");
           }
           System.out.println("The thread stopped!");
       }
   }

   public void stopRunningThread() {
       isActive = false;
   }
}
ืงืจื™ืื” ืœืžืชื•ื“ื” stopRunningThread() ืžื’ื“ื™ืจื” ืืช ื”ื“ื’ืœ ื”ืคื ื™ืžื™ ืœ-false, ืžื” ืฉื’ื•ืจื ืœืฉื™ื˜ืช run() ืœื”ืกืชื™ื™ื. ื‘ื•ืื• ื ืงืจื ืœื–ื” ื‘ื’ื“ื•ืœ :
System.out.println("Program starting...");
CustomThread thread = new CustomThread();
thread.start();
Thread.sleep(3);
// As long as our main thread is asleep, our CustomThread runs and prints its message on the console
thread.stopRunningThread();
System.out.println("Program stopping...");
ื›ืชื•ืฆืื” ืžื›ืš, ื ืจืื” ืžืฉื”ื• ื›ื–ื” ื‘ืงื•ื ืกื•ืœื”:
ื”ืชื•ื›ื ื™ืช ืžืชื—ื™ืœื”... ื”ืฉืจืฉื•ืจ ืžื‘ืฆืข ืœื•ื’ื™ืงื” ื›ืœืฉื”ื™... ื”ืฉืจืฉื•ืจ ืžื‘ืฆืข ืœื•ื’ื™ืงื” ื›ืœืฉื”ื™... ื”ืฉืจืฉื•ืจ ืžื‘ืฆืข ืœื•ื’ื™ืงื” ืžืกื•ื™ืžืช... ื”ืฉืจืฉื•ืจ ืžื‘ืฆืข ืœื•ื’ื™ืงื” ืžืกื•ื™ืžืช... ื”ืฉืจืฉื•ืจ ืžื‘ืฆืข ืœื•ื’ื™ืงื” ืžืกื•ื™ืžืช... ื”ืฉืจืฉื•ืจ ืžื‘ืฆืข ืœื•ื’ื™ืงื” ื›ืœืฉื”ื™... ื”ืชื•ื›ื ื™ืช ื ืขืฆืจืช... ื”ืฉืจืฉื•ืจ ื ืขืฆืจ!
ื–ื” ืื•ืžืจ ืฉื”ืฉืจืฉื•ืจ ืฉืœื ื• ื”ืชื—ื™ืœ, ื”ื“ืคื™ืก ื›ืžื” ื”ื•ื“ืขื•ืช ื‘ืงื•ื ืกื•ืœื”, ื•ืื– ื”ื•ืคืกืง ื‘ื”ืฆืœื—ื”. ืฉื™ืžื• ืœื‘ ืฉืžืกืคืจ ื”ื”ื•ื“ืขื•ืช ื”ืžื•ืฆื’ื•ืช ื™ืฉืชื ื” ืžื”ืฉืงื” ืœื”ืคืขืœื”. ื•ืœืคืขืžื™ื ื”ื—ื•ื˜ ื”ืขื–ืจ ืขืœื•ืœ ืœื ืœื”ืฆื™ื’ ื“ื‘ืจ ื›ืœืœ. ื”ื”ืชื ื”ื’ื•ืช ื”ืกืคืฆื™ืคื™ืช ืชืœื•ื™ื” ื‘ื›ืžื” ื–ืžืŸ ื”ื—ื•ื˜ ื”ืจืืฉื™ ื™ืฉืŸ. ื›ื›ืœ ืฉื”ื•ื ื™ืฉืŸ ื™ื•ืชืจ, ื›ืš ืงื˜ืŸ ื”ืกื™ื›ื•ื™ ืฉื”ื—ื•ื˜ ื”ืขื–ืจ ืœื ื™ืฆืœื™ื— ืœื”ืฆื™ื’ ื›ืœื•ื. ืขื ื–ืžืŸ ืฉื™ื ื” ืฉืœ 1 ms, ื›ืžืขื˜ ืืฃ ืคืขื ืœื ืชืจืื” ืืช ื”ื”ื•ื“ืขื•ืช. ืื‘ืœ ืื ืืชื” ืžื’ื“ื™ืจ ืืช ื–ื” ืœ-20 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”, ื”ื”ื•ื“ืขื•ืช ื›ืžืขื˜ ืชืžื™ื“ ื™ื•ืฆื’ื•. ื›ืฉื–ืžืŸ ื”ืฉื™ื ื” ืงืฆืจ, ืœื—ื•ื˜ ืคืฉื•ื˜ ืื™ืŸ ื–ืžืŸ ืœื”ืชื—ื™ืœ ื•ืœืขืฉื•ืช ืืช ืขื‘ื•ื“ืชื•. ื‘ืžืงื•ื ื–ืืช, ื–ื” ืžื•ืคืกืง ืžื™ื“. ื“ืจืš ืฉื ื™ื™ื” ื”ื™ื ืœื”ืฉืชืžืฉ ื‘ืฉื™ื˜ืช interrupted() ื‘ืื•ื‘ื™ื™ืงื˜ Thread . ื”ื•ื ืžื—ื–ื™ืจ ืืช ื”ืขืจืš ืฉืœ ื”ื“ื’ืœ ื”ืคื ื™ืžื™ ืฉื ืงื˜ืข, ืฉื”ื•ื ืฉืงืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ืื• ืฉื™ื˜ืช interrupt() ืฉืœื• , ืฉืžื’ื“ื™ืจื” ืืช ื”ื“ื’ืœ ื”ื–ื” ืœ- true (ื›ืฉื”ื“ื’ืœ ื”ื•ื true , ื”ืฉืจืฉื•ืจ ืฆืจื™ืš ืœื”ืคืกื™ืง ืœืคืขื•ืœ). ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื“ื•ื’ืžื”:
public class CustomThread extends Thread {

   @Override
   public void run() {
       {
           while (!Thread.interrupted()) {
               System.out.println("The thread is executing some logic...");
           }
           System.out.println("The thread stopped!");
       }
   }
}
ืคื•ืขืœ ื‘- main :
System.out.println("Program starting...");
Thread thread = new CustomThread();
thread.start();
Thread.sleep(3);
thread.interrupt();
System.out.println("Program stopping...");
ื”ืชื•ืฆืื” ืฉืœ ื”ืคืขืœืช ื–ื” ื”ื™ื ื–ื”ื” ืœืžืงืจื” ื”ืจืืฉื•ืŸ, ืื‘ืœ ืื ื™ ืื•ื”ื‘ ื™ื•ืชืจ ืืช ื”ื’ื™ืฉื” ื”ื–ื•: ื›ืชื‘ื ื• ืคื—ื•ืช ืงื•ื“ ื•ื”ืฉืชืžืฉื ื• ื™ื•ืชืจ ื‘ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืžื•ื›ื ื” ื•ืกื˜ื ื“ืจื˜ื™ืช. ื•ื‘ื›ืŸ, ื–ื”ื• ืœื”ื™ื•ื!
ืงืจื ืขื•ื“:
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION