ΠΠΏΠ°ΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΡΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΡΠΎΠΊΠ° Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ sleep(..), ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΡΠ΄ΡΡ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π° ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ deadlock. Π’Π°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΡΡΠ²ΠΈΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΡΠΎΠ΄Ρ wait(), notify(), notifyAll() ΠΊΠ»Π°ΡΡΠ° Object
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Object, Π·Π°Π²Π΅ΡΡΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ Π² Java.
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Java ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ synchronized Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½ΠΎ ΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ wait-set, Π½Π°Π±ΠΎΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ wait() Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠΏΠ°ΡΡΡ Π² Π΅Π³ΠΎ wait-set. ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ Ρ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠ΅ΡΠΎΠ΄ notifyAll(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π°Π΅Ρ Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈΠ· wait-set. ΠΠ΅ΡΠΎΠ΄ notify() ΠΏΡΠΎΠ±ΡΠΆΠ΄Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΎΠ΄Π½ΠΈΠΌ Π²Π°ΠΆΠ½ΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ±ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ. Π’ΠΎ Π΅ΡΡΡ Π»ΠΈΠ±ΠΎ Π²Π½ΡΡΡΠΈ synchronized -Π±Π»ΠΎΠΊΠ° Ρ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
public class WaitThread implements Runnable {
private Object shared;
public WaitThread(Object o) {
shared=o;
}
public void run() {
synchronized (shared) {
try {
shared.wait();
}
catch (InterruptedException e) {
}
System.out.println("after wait");
}
}
public static void main(String s[]) {
Object o = new Object();
WaitThread w = new WaitThread(o);
new Thread(w).start();
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
}
System.out.println("before notify");
synchronized (o) {
o.notifyAll();
}
}
}
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ:
before notify
after wait
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ wait(), ΠΊΠ°ΠΊ ΠΈ sleep(), ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ InterruptedException, ΡΠΎ Π΅ΡΡΡ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ interrupt().
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²:
public class ThreadTest implements Runnable {
final static private Object shared=new Object();
private int type;
public ThreadTest(int i) {
type=i;
}
public void run() {
if (type==1 || type==2) {
synchronized (shared) {
try {
shared.wait();
}
catch (InterruptedException e) {
}
System.out.println("Thread "+type+" after wait()");
}
}
else {
synchronized (shared) {
shared.notifyAll();
System.out.println("Thread "+type+" after notifyAll()");
}
}
}
public static void main(String s[]) {
ThreadTest w1 = new ThreadTest(1);
new Thread(w1).start();
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
}
ThreadTest w2 = new ThreadTest(2);
new Thread(w2).start();
try {
Thread.sleep(100);
}
catch (InterruptedException e) {
}
ThreadTest w3 = new ThreadTest(3);
new Thread(w3).start();
}
}
ΠΡΠΈΠΌΠ΅Ρ 12.5.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ:
Thread 3 after notifyAll()
Thread 1 after wait()
Thread 2 after wait()
ΠΡΠΈΠΌΠ΅Ρ 12.6.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π±ΡΠ» Π·Π°ΠΏΡΡΠ΅Π½ ΠΏΠΎΡΠΎΠΊ 1, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡ ΠΆΠ΅ Π²ΡΠ·Π²Π°Π» ΠΌΠ΅ΡΠΎΠ΄ wait() ΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ°ΡΠ΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ 2. ΠΠ°Π»Π΅Π΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊ 3.
Π‘ΡΠ°Π·Ρ ΠΎΠ±ΡΠ°ΡΠ°Π΅Ρ Π½Π° ΡΠ΅Π±Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΊΡ. ΠΡΠ΅ ΠΏΠΎΡΠΎΠΊ 1 Π²ΠΎΡΠ΅Π» Π² synchronized -Π±Π»ΠΎΠΊ, Π° ΡΡΠ°Π»ΠΎ Π±ΡΡΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ shared. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π»ΠΎ ΠΈ ΠΏΠΎΡΠΎΠΊΡ 2 Π·Π°ΠΉΡΠΈ Π² synchronized -Π±Π»ΠΎΠΊ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈ ΠΏΠΎΡΠΎΠΊΡ 3. ΠΡΠΈΡΠ΅ΠΌ, Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈΠ½Π°ΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ "ΡΠ°Π·Π±ΡΠ΄ΠΈΡΡ" ΠΏΠΎΡΠΎΠΊΠΈ 1 ΠΈ 2?
ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° wait(), ΠΎΡΠΏΡΡΠΊΠ°ΡΡ Π²ΡΠ΅ Π·Π°Π½ΡΡΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡΠ°ΠΊ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ notifyAll(). ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈΠ· wait-set Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠ±Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅ΡΠ½ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Π²Π΅Π΄Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ synchronized -Π±Π»ΠΎΠΊΠ°!
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° notifyAll() Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΡΠ°Π·Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΡΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π±Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ ΡΠ²ΠΎΠΉ synchronized -Π±Π»ΠΎΠΊ ΠΈ ΠΎΡΠΏΡΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΊ ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½, ΠΏΠΎΡΠΎΠΊ ΡΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΈ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° wait(), Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ notifyAll(). Π ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ ΡΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅ΡΠΎΠ΄ wait() Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ°, ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊ ΡΠ°ΠΌ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎ Π½Π°ΡΠ°ΡΡ Π΅ΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π±ΡΠ»ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π·Π±ΠΈΡΠ°Π»ΠΈΡΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΡΠ°ΠΊΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ β ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΠ‘ Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π° Π·Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° time slicing. ΠΡΠ»ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ ΡΡΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π² Java ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Runnable ΠΈ ΠΊΠ»Π°ΡΡ Thread. Π‘ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅: ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ daemon. ΠΠ»Π°Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ°Ρ Π² ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ - ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠΌ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ -β ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π² Java ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ° Π·Π°Π΄Π°ΡΠ°, Π±ΡΠ» ΡΠ΄Π΅Π»Π°Π½ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² JVM, ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ. ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ synchronized, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ Π² Π½Π°ΡΠ°Π»Π΅ Π±Π»ΠΎΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ, ΠΏΠΎΠΊΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡΡ.
ΠΠΎΠ²ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ - Π²Π·Π°ΠΈΠΌΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (deadlock), ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π³ΠΎΡΠΎΠ², ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ Java Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ. Π Π»Π΅ΠΊΡΠΈΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π»ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· "Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ" ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Object, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
13. ΠΠ΅ΠΊΡΠΈΡ: ΠΠ°ΠΊΠ΅Ρ java.lang
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java β java.lang. Π Π½Π΅ΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΊΠ»Π°ΡΡΡ Object ΠΈ Class, ΠΊΠ»Π°ΡΡΡ-ΠΎΠ±Π΅ΡΡΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠ»Π°ΡΡ Math, ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ String ΠΈ StringBuffer, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ System, Runtime ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. Π ΡΡΠΎΠΌ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠΈΠΏΡ, ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π²ΡΠΈΠ΅ΡΡ ΡΠ°Π½Π΅Π΅,β Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΠΌΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° java.lang Π²Ρ ΠΎΠ΄ΡΡ ΠΊΠ»Π°ΡΡΡ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ , ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠΌ ΠΈΠ· Π²ΡΠ΅Ρ , Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² Java API. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±Π΅Π· Π½Π΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ( import java.lang.*; ).
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΠΊΠ»Π°ΡΡΡ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΠ°ΠΊΠ΅ΡΠ°.
Object β ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ Π² ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ².
Class β ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ JVM.
String β ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Ρ.
StringBuffer β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ (ΡΠΎΠ·Π΄Π°Π½ΠΈΡ) ΡΡΡΠΎΠΊ.
Number β Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ²-ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠ±Π΅ΡΡΠΎΠΊ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² Java.
Character β ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° Π΄Π»Ρ ΡΠΈΠΏΠ° char.
Boolean β ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΎΠ±Π΅ΡΡΠΊΠ° Π΄Π»Ρ ΡΠΈΠΏΠ° boolean.
Math β ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½Π°Π±ΠΎΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Throwable β Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ±ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΡΠΎΡΠ΅Π½ΠΎ ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½ΠΎ Π±Π»ΠΎΠΊΠΎΠΌ catch, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΎ ΠΎΡ Throwable.
Thread β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Java. Runnable β ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ Thread Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ThreadGroup β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ Π² Π³ΡΡΠΏΠΏΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ°Π·Ρ Π½Π°Π΄ Π²ΡΠ΅ΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π² Π½Π΅ΠΉ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ Π³ΡΡΠΏΠΏ.
System β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ.
Runtime β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΎ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ.
Process β ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Runtime.
ClassLoader β ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΡ JVM.
SecurityManager β Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π΄Π°Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
Compiler β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Just-in-Time ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ².
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ:
Cloneable β Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Π΄ΡΡΠ² JVM;
Comparable β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°ΡΡ (ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ) ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.