Хм, много.
Здесь есть несколько параметров. Определенная виртуальная машина, плюс, как правило, на ней также есть параметры времени выполнения. Это в некоторой степени определяется операционной системой: какую поддержку имеет базовая ОС для потоков и какие ограничения она на них накладывает? Если виртуальная машина вообще использует потоки уровня ОС, то старый добрый красный / зеленый поток.
Что означает «поддержка» - это другой вопрос. Если вы пишете программу на Java, это просто что-то вроде
class DieLikeADog {
public static void main(String[] argv){
for(;;){
new Thread(new SomeRunaable).start();
}
}
}
(и не жалуйтесь на мелкие детали синтаксиса, я нахожусь на моей первой чашке кофе), тогда вы наверняка должны ожидать запуска сотен или тысяч потоков. Но создание потока относительно дорого, и накладные расходы планировщика могут стать интенсивными; неясно, что эти темы могут сделать что-нибудь полезное.
Обновление
Хорошо, не удержался. Вот моя маленькая тестовая программа с парой украшений:
public class DieLikeADog {
private static Object s = new Object();
private static int count = 0;
public static void main(String[] argv){
for(;;){
new Thread(new Runnable(){
public void run(){
synchronized(s){
count += 1;
System.err.println("New thread #"+count);
}
for(;;){
try {
Thread.sleep(1000);
} catch (Exception e){
System.err.println(e);
}
}
}
}).start();
}
}
}
В OS / X 10.5.6 для Intel и Java 6 5 (см. Комментарии) вот что я получил
New thread #2547
New thread #2548
New thread #2549
Can't create thread: 5
New thread #2550
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:592)
at DieLikeADog.main(DieLikeADog.java:6)