У меня вопрос к знатокам: может ли сложиться такая ситуация, что после проверки условия 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");
}
}
}