Итак, STB является двухъядерным. Я думал, что мы можем создать только 2 подходящих потока.Сколько потоков Java может быть создано для двухъядерного процессора
В каждом keyreleased()
Я создаю новый поток
Runnable runnable = new Runnable()
{
int i = j;
public void run()
{
while (true)
{
System.out.println("This thread is running always number is " + i);
}
}
};
Thread th = new Thread(runnable);
th.setPriority(Thread.MAX_PRIORITY);
th.start();
j++;
//...
}
Но даже после создания более 20 потоков, коробка не имеет каких-либо проблем.
Это потому, что JVM понял, что пусковой блок пуст, и он оптимизировал код? Или реализация JVM для while (true) отличается?
Примечание: я попробовал положить Thread.sleep (1000), а также, но никаких проблем
как насчет времени (правда)? Не означает, что while (true) полностью блокирует поток. – Gerrard
В то время как (правда) почти не имеет значения; вы вызываете sleep(). Попробуйте удалить вызов для сна, тогда вы увидите истинное воздействие непрерывного бесконечного цикла. –
Моя первая попытка была явно без сна. Мое понимание заключается в том, что сон будет содержать поток. Java doc говорит sleep. Заставляет текущий исполняемый поток спать (временно прекратить выполнение) за указанное количество миллисекунд, с учетом точности и точности системных таймеров и планировщиков. Нить не теряет права собственности на какие-либо мониторы. – Gerrard