Π£ ΠΌΠ΅Π½Ρ Π²ΠΎΠΏΡΠΎΡ ΠΊ Π·Π½Π°ΡΠΎΠΊΠ°ΠΌ: ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ if(createdThreadCount < Solution.count) ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°? Π’ΠΎ Π΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅ΡΡΡ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π»ΠΈΡΠ½ΠΈΠΉ 16ΠΉ ΠΏΠΎΡΠΎΠΊ? Π Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (ΠΏΡΡΡΡ Π΄Π°ΠΆΠ΅ ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ)Π±Π΅Π· synchronized Π² ΡΠ»ΡΡΠ°Π΅ ΠΌΡΠ»ΡΡΠΈΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
(ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎ ΡΡΡΠΈ ΠΎΠ΄Π½ΠΈ Π½Π° ΠΊΠ»Π°ΡΡ)?
public class Solution {
static int count = 15;
static volatile int createdThreadCount;
public static void main(String[] args) {
System.out.println(new GenerateThread());
}
public static class GenerateThread extends Thread {
public GenerateThread(){
super(String.valueOf(++createdThreadCount));
start();
}
@Override
public void run() {
if (createdThreadCount < Solution.count) {
System.out.println(new GenerateThread());
}
}
@Override
public String toString() {
return (getName()+" created");
}
}
}