![ืืืื ืช ืฉืืืืช ืืชืฉืืืืช ืืจืืืื ืขืืืื ืืืฉืจืช ืืคืชื Java. ืืืง 12 - 1](https://cdn.codegym.cc/images/article/75ea2f2a-741a-42af-9915-e6e5bd4a478a/800.jpeg)
103. ืืืื ืืืืื ืืืื ืขื ืืืืงืช ืืจืืืื ืืืืื ืืืจืืฉื?
ืื ืื ื ืืืื ื ืืื ืืช ืืฉืืื, ืื ืฉืืืืื ืืืื ืืืืื ืืขืืืื ืขื ืืจืืืื ืืืื ืืจืืฉื. ืืืืืื ืืจืืืื ืืืื ืื ืืืืงืื:- ืฉืืื ืฉืืจืกื ืื ืืืืฉืืช ืืฆืืฆื/ืืืฉืื ืื ืืืืื ืืืจืืง ืืจืืืื ืืกืืื ืื ืฉืื ืืืืืื ืืืชืจ ืืืืจืจืืื ืืืฉืจ ืืจืืืื ืืฉืืืช superclass/ืืืฉืง.
public interface Animal {
void speak() throws IOException;
}
ืืขืช ืืืืขืช ืืืฉืง ืื, ืืื ื ื ืืืืืื ืืืฉืืฃ ืืจืื ืืืื ืืืชืจ ืฉื ืืชื ืืืจืืง (ืืืฉื Exception , Throwable ), ืื ืื ื ืืืืืื ืืืืืืฃ ืืช ืืืจืื ืืงืืื ืืชืช-ืืืืงื, ืืืื FileNotFoundException :
public class Cat implements Animal {
@Override
public void speak() throws FileNotFoundException {
// Some implementation
}
}
- ืคืกืงืช ืืืฉืืืืช ืฉื ืื ืื ืืืฉื ื ืืืืืช ืืืืื ืืช ืื ืืืืงืืช ืืืจืื ืฉื ืืจืงื ืขื ืืื ืื ืื ืืืืงืืช ืืขื ืฉื ืงืจื ืืืฆืืจ ืืช ืืืืืืืงื.
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](https://cdn.codegym.cc/images/article/ec2f9517-cc7e-47e1-8170-5b096db94b21/512.jpeg)
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](https://cdn.codegym.cc/images/article/2a3bd744-a0a0-47e4-aca5-725baa86c5d8/512.jpeg)
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](https://cdn.codegym.cc/images/article/0b485afc-3d7b-4bf3-ba38-dd9f6055a5d0/512.jpeg)
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...");
ืืชืืฆืื ืืื, ื ืจืื ืืฉืื ืืื ืืงืื ืกืืื:
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...");
ืืชืืฆืื ืฉื ืืคืขืืช ืื ืืื ืืื ืืืงืจื ืืจืืฉืื, ืืื ืื ื ืืืื ืืืชืจ ืืช ืืืืฉื ืืื: ืืชืื ื ืคืืืช ืงืื ืืืฉืชืืฉื ื ืืืชืจ ืืคืื ืงืฆืืื ืืืืช ืืืื ื ืืกืื ืืจืืืช. ืืืื, ืืื ืืืืื!
GO TO FULL VERSION