ืืขืืืช ื ืคืชืจืืช ืขื ืืื ืจืืืื ืคืชืืืื
ืจืืืื ืืืืืืื ืืืืฆื ืืืขืฉื ืืื ืืืฉืื ืฉืชื ืืืจืืช ืืฉืืืืช:-
ืขืฉื ืืื ืืืจืื ืืืงืืื.
ืืืืืื ืืืขืื, ืืืืื ืฉืื ืื (ืื ื ืืฉืคืื) ืืืฆืขื ืืกืคืจ ืคืขืืืืช ืืืงืืื: ืื ืฉืืคื ืืืื, ืืืื ืืื ืืช ืืืจืื ืืืจืื.
ืื ื ืืืืืื ืืืฆืืข ืืืืื ืืงืฉืืจื ืืืชืจ ืืชืื ืืช. ื ื ืื ืฉืืฉ ืื ืชืืื ืืช ืขื ืืืฉืง ืืฉืชืืฉ. ืืืฉืจ ืืชื ืืืืฅ ืขื 'ืืืฉื' ืืชืืื ืืช, ืืื ืืืฉืืืื ืืืืจืื ืืืชืจืืฉ ืืืืฉืชืืฉ ืืืืจ ืืจืืืช ืืช ืืืกื ืืื. ืื ืคืขืืืืช ืืื ืืืฆืขื ืืจืฆืฃ, ืืชืืื ืืช ืคืฉืื ืชืชืงืข ืืืืจ ืฉืืืฉืชืืฉ ืืืืฅ ืขื ืืคืชืืจ 'ืืืฉื'. ืืืฉืชืืฉ ืืจืื ืืช ืืืกื ืขื ืืกื ืืคืชืืจ 'ืืืฉื' ืขื ืฉืืชืืื ื ืชืืฆืข ืืช ืื ืืืืฉืืืื ืืคื ืืืืื ืืชืืืข ืืืืง ืื ืืืฉืง ืืืฉืชืืฉ ืืชืจืขื ื.
ืืืื, ืื ื ืื ืื ืฉื ืืื ืืื ืืงืืช!
ืื ืฉื ืืื ืืขืื ืืช ืืชืืื ืืช ืฉืื ื ืืืืฉ, ืื, ืืคื ืฉืืืืจืื ืืชืื ืชืื, 'ืืขืฉืืช ืืืงืืื' ืืืชื. ืืืื ื ืขืจืื ืืช ืืืืฉืืืื ืฉืื ื ืขื ืฉืจืฉืืจ ืืื ืื ืฆืืืจ ืืช ืืืฉืง ืืืฉืชืืฉ ืขื ืืืจ. ืืจืื ืืืืฉืืื ืืฉ ืืกืคืืง ืืฉืืืื ืืขืฉืืช ืืืช. ืื ื ืื ืืืจื ืื, ืืชืืื ืืช ืื ืชืงืคื ืืืืฉืชืืฉ ืืขืืืจ ืืฆืืจื ืืืงื ืืื ืืืกืืื ืืืื ืืืืื ืืื ืฉืงืืจื ืืคื ืื. ืืื ืื ืืคืจืืข ืืฉื ื :)
-
ืืฆืข ืืืฉืืืื ืืืจ ืืืชืจ.
ืืื ืืจืื ืืืชืจ ืคืฉืื ืืื. ืื ืืืขืื ืฉืื ื ืืฉ ืืกืคืจ ืืืืืช, ืืืจืื ืืืขืืืื ืืืื ืืฉ, ืื ืืื ืืืืืช ืืืืืืช ืืืชืืืื ืขื ืจืฉืืืช ืืืฉืืืืช ืฉืื ื ืืืงืืื. ืืจืืจ ืฉืื ืื ืื ื ืฆืจืืืื ืืืฆืข 1000 ืืฉืืืืช ืืื ืืืช ืืืงืืช ืฉื ืืื ืืืช, ืืืื ืืืช ืืืืื ืืกืืื ืืช ืืจืฉืืื ืชืื 1000 ืฉื ืืืช, ืฉืชื ืืืืืช ืชืื 500 ืฉื ืืืช, ืฉืืืฉ ืืงืฆืช ืืืชืจ ื-333 ืฉื ืืืช ืืื'.
public class MyFirstThread extends Thread {
@Override
public void run() {
System.out.println("I'm Thread! My name is " + getName());
}
}
ืืื ืืืฆืืจ ืืืืจืืฅ ืฉืจืฉืืจืื, ืขืืื ื ืืืฆืืจ ืืืืงื, ืืืจืื ืื ืืจืฉืช ืืช ื- java.lang . ืืืืงืช ืฉืจืฉืืจ , ืืืจืืก ืืช ืฉืืืช run() ืฉืื . ืืืจืืฉื ืืืืจืื ื ืืฉืืื ืืืื. ืืฉืืืช run() ืื ื ืืืืืจืื ืืช ืืืืืืื ืืืืฆืืข ืืฉืจืฉืืจ ืฉืื ื. ืืขืช, ืื ื ืืฆืืจ ืื ืคืขืื ืืืคืข ืฉื MyFirstThread , ืืฉืืื run() ืชืฆืื ืฉืืจื ืขื ืฉื: ืืฉืืื getName() ืืฆืืื ืืช ืฉื ื-'system' ืฉื ืืฉืจืฉืืจ, ืืืืงืฆื ืืืืืืืืช. ืืื ืืื ืื ืื ื ืืืืจืื ืืืืกืืก? ืืืื ืืืฆืืจ ืืื ืืืืืืช!
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
MyFirstThread thread = new MyFirstThread();
thread.start();
}
}
}
ืคืื ืืกืืฃ: ืื ื ืฉืจืฉืืจ! ืฉืื ืืื Thread-2 I'm Thread! ืฉืื ืืื ืฉืจืฉืืจ-1 ืื ื ืืื! ืฉืื ืืื Thread-0 I'm Thread! ืฉืื ืืื Thread-3 I'm Thread! ืฉืื ืืื Thread-6 I'm Thread! ืฉืื ืืื Thread-7 I'm Thread! ืฉืื ืืื Thread-4 I'm Thread! ืฉืื ืืื Thread-5 I'm Thread! ืฉืื ืืื Thread-9 I'm Thread! ืฉืื Thread-8 ืืืื ื ืืฆืืจ 10 ืฉืจืฉืืจืื ( MyFirstThread objects, ืฉืืืจืฉืื ืืช Thread ) ืื ืชืืื ืืืชื ืขื ืืื ืงืจืืื ืืืชืืื start() ืืื ืืืืืืงื. ืืืืจ ืงืจืืื ืืืชืืื start() , ืืืืืืื ืืฉืืืช run() ืืืืฆืข. ืืขืจื: ืฉืืืช ืืฉืจืฉืืจ ืืื ื ืืกืืืจืื. ืื ืืืืจ ืฉืื ืื ืืื ืืจืฆืฃ: Thread-0 , Thread-1 , Thread-2 , ืืื ืืืื? ืืคื ืฉืื ืงืืจื, ืื ืืืืื ืืชืงืืคื ืฉืื ืืฉืืื 'ืจืฆืืคื' ืืื ื ืืชืืืื. ืืืขืื ืืื ืฉืกืืคืงื ื ืจืง ืคืงืืืืช ืืืฆืืจื ืืืจืฆื ืฉื 10 ืฉืจืฉืืจืื. ืืชืืื ืืฉืจืฉืืจ, ืื ืื ืื ืืืืื ืฉื ืืขืจืืช ืืคืขืื, ืืืืื ืืช ืกืืจ ืืืืฆืืข ืฉืืื. ืืขืืฆืื ืืืืืืง ืฉืื ืืืกืืจืืืืืช ืงืืืช ืืืืืืืช ืื ื ืืฉืืื ืืืืื ืขืืืง ืฉืื ื ืฆืืื ืืืื ืืจืืข. ืืืืจ ืืขืืงืจื ืฉืืฉ ืืืืืจ ืืื ืฉืืืชืื ืช ืื ืืืื ืืฉืืื ืืกืืจ ืืืืฆืืข ืฉื ืฉืจืฉืืจืื. ืืื ืืืืื ืืช ืืืืจืช ืืืฆื, ื ืกื ืืืคืขืื ืืช ืฉืืืช main() ืืืืืื ืืืขืื ืขืื ืืื ืคืขืืื. ืคืื ืืกืืฃ ืืจืืฆื ืฉื ืืื: ืื ื ืฉืจืฉืืจ! ืฉืื ืืื Thread-0 I'm Thread! ืฉืื ืืื Thread-4 I'm Thread! ืฉืื ืืื Thread-3 I'm Thread! ืฉืื ืืื Thread-2 I'm Thread! ืฉืื ืืื ืฉืจืฉืืจ-1 ืื ื ืืื! ืฉืื ืืื Thread-5 I'm Thread! ืฉืื ืืื Thread-6 I'm Thread! ืฉืื ืืื Thread-8 I'm Thread! ืฉืื ืืื Thread-9 I'm Thread! ืฉืื ืืื Thread-7 Console ืคืื ืืืจืืฆื ืืฉืืืฉืืช: I'm Thread! ืฉืื ืืื Thread-0 I'm Thread! ืฉืื ืืื Thread-3 I'm Thread! ืฉืื ืืื ืฉืจืฉืืจ-1 ืื ื ืืื! ืฉืื ืืื Thread-2 I'm Thread! ืฉืื ืืื Thread-6 I'm Thread! ืฉืื ืืื Thread-4 I'm Thread! ืฉืื ืืื Thread-9 I'm Thread! ืฉืื ืืื Thread-5 I'm Thread! ืฉืื ืืื Thread-7 I'm Thread! ืฉืื ืืื Thread-8
ืืขืืืช ืฉื ืืฆืจื ืขื ืืื ืจืืืื ืฉืจืฉืืจืื
ืืืืืื ืฉืื ื ืขื ืกืคืจืื, ืจืืืช ืฉ-multithreading ืคืืชืจ ืืฉืืืืช ืืฉืืืืช ืืืื ืืืืื ืืืคืื ืืช ืืชืืื ืืืช ืฉืื ื ืืืืืจืืช ืืืชืจ. ืืจืื ืคืขืืื ืืืจ ืืืชืจ. ืืื ืจืืืื ืฉืจืฉืืจืื ื ืืฉื ืื ืืฉื ืงืฉื. ืืืื, ืื ืืฉืชืืฉืื ืื ืืฆืืจื ืื ื ืืื ื, ืื ืืืฆืจ ืืขืืืช ืืืงืื ืืคืชืืจ ืืืชื. ืืฉืื ื ืืืืจ 'ืืืฆืจ ืืขืืืช', ืื ื ืื ืืชืืืื ืืืืื ืืืคืฉื ืืืฉืื. ืืฉื ื ืฉืชื ืืขืืืช ืกืคืฆืืคืืืช ืฉ-multithreading ืืืื ืืืฆืืจ: ืืืื ืกืชืื ืืชื ืื ืืืจืืฅ. ืืืื ืกืชืื ืืื ืืฆื ืฉืื ืฉืจืฉืืจืื ืืจืืืื ืืืชืื ืื ืืืฉืืืื ืืืืืืงืื ืื ืืื, ืืืฃ ืืื ืืื ืื ืืืื ืืืืฉืื ืืจืืฅ. ื ืืืจ ืขื ืื ืืืชืจ ืืฉืืขืืจืื ืืืืื. ืืืืืื ืืืื ืชืกืคืืง ืืขืช ืขืชื: ืชืืจื ืืขืฆืืื ืฉ-Thread-1 ืืงืืื ืืื ืืจืืงืฆืื ืขื ืืืืืืงื-1 ืืืฉืื, โโืืฉ-Thread-2 ืืงืืื ืืื ืืจืืงืฆืื ืขื ืืืืืืงื-2. ืืชืจ ืขื ืื, ืืชืืื ืืช ืืชืืื ืื:- Thread-1 ืืคืกืืง ืืช ืืืื ืืจืืงืฆืื ืขื Object-1 ืืขืืืจ ื-Object-2 ืืจืืข ืฉ-Thread-2 ืืคืกืืง ืืช ืืืื ืืจืืงืฆืื ืขื Object-2 ืืขืืืจ ื-Object-1.
- Thread-2 ืืคืกืืง ืืช ืืืื ืืจืืงืฆืื ืขื ืืืืืืงื-2 ืืขืืืจ ื-Object-1 ืืจืืข ืฉ-Thread-1 ืืคืกืืง ืืช ืืืื ืืจืืงืฆืื ืขื Object-1 ืืขืืืจ ื-Object-2.
public class MyFirstThread extends Thread {
@Override
public void run() {
System.out.println("Thread executed: " + getName());
}
}
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
MyFirstThread thread = new MyFirstThread();
thread.start();
}
}
}
ืขืืฉืื ืืืืื ื ืฉืืชืืื ืืช ืืืจืืืช ืืืคืขืืช ืจืืืื ืฉืืืฉื ืืืื! ืืื-0 ืืืฆืื ืืืฆืื ืืืืงืจืจ. ืืื-1 ืืืืืง ืืช ืืืืจืืื. ืืื-2 ืืงืื ืืืืช ืืื ืื ืืืชื ืขื ืืืืจืืื. ืืื-3 ืืืืืง ืืช ืืืืจืืื. ืืื-4 ืืืฆืง ืฉืื ืืืืืช. ืืื-5 ืฉืืืจ ืืช ืืืืฆืื ืืืืฆืง ืืืชื ืืืืืช. ืืื-6 ืืืจืง ืืช ืงืืืคืืช ืืืืฆืื ืืคื ืืืฉืคื. ืืื-7 ืืืฆืื ืืช ืืืืฆืื ืืืืืฉืืืช ืืืืืขืจ. ืืื-8 ืื ืื ืืช ืืืืฆืื ืืืืืฉืืืช ืขื ืฆืืืช. ืืื-9 ืฉืืืฃ ืืช ืืืืื. ืชืกืชืื ืขื ืืชืืฆืืืช ืฉื ืืชืืื ืืช ืฉืื ื: ืฉืจืฉืืจ ืืืฆื ืืคืืขื: ืฉืจืฉืืจ-0 ืฉืจืฉืืจ ืืืฆื: ืฉืจืฉืืจ-2 ืืชืืฆืข ืฉืจืฉืืจ-1 ืฉืจืฉืืจ ืืืฆื ืืคืืขื: ืฉืจืฉืืจ-4 ืืืฆื ืืคืืขื: ืฉืจืฉืืจ-9 ืฉืจืฉืืจ ืืืคืขื: ืฉืจืฉืืจ-5 ืืฉืจืฉืืจ ืืืคืขื: ืืฉืืื-8 ืืืฆื ืืืืจื: ืฉืจืฉืืจ-7 ืฉืจืฉืืจ ืืืฆื ืืืืจื: ืฉืจืฉืืจ-3 ืืื ืื ืฉืืจืช ืงืืืืื? :) ืืืื ืืืื ืฉืขืืืืช ืืชืืื ืืช ืฉืื ื ืชืืืื ืืกืืจ ืืืืฆืืข ืฉื ืืฉืจืฉืืจืื. ืืืชืืฉื ืืืคืจื ืืงืื ื ืืืืชืจ ืฉื ืืจืฆืฃ ืื ืืจืฉ, ืืืืื ืฉืื ื ืืืคื ืืืืื ืื, ืืจืืืื ืืืืจืฃ ืืืจืก ืืช ืื ืื ืฉืืกืืืื. ืื ืื ืืขืื ื ืคืืฆื ืืชืื ืืช ืืจืืื-ืืืืืื. ืืชื ืชืฉืืข ืขื ืื ืืืชืจ ืืคืขื ืืืช. ืืกืืื ืฉืืขืืจ ืื, ืืจืฆืื ื ืืืืืืฅ โโืขื ืกืคืจ ืขื ืจืืืื ืฉืจืฉืืจืื. 'Java Concurrency in Practice' ื ืืชื ื-2006, ืื ืื ืืืื ืืืจืืืื ืืืืช ืฉืื. ืืื ืืืงืืฉ ืืชืื ืืช ื'ืืืื ืขื ืจืืืื ืืืืื - ืืืืกืืืืช ืืขื ืืืขืืืืช ืืืื ืื-ืืคืืกืื ืื ืคืืฆืื ืืืืชืจ. ืื ืืื ืืื ืชืืืื ืืืคืื ืืืืจื ืฉื ืจืืืื ืฉืจืฉืืจืื, ืกืคืจ ืื ืืื ืกืคืจ ืืืื. ื ืชืจืื ืืฉืืขืืจืื ืืืืื! :)
GO TO FULL VERSION