Java - jak to jest z wątkami?

0

Hej, dopiero uczę się programować, założyłem ten temat w dziale dot. Javy, bo właśnie w tym języku programuje.

Chciałem się zapytać jak to jest z multithreadingiem w Javie,
nie do końca rozumiem tego, w jaki sposób JVM może sobie stworzyć 10tysięcy wątków i dopiero potem rzucić:

Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread

Mój CPU intel i7700, ma 4 rdzenie, a na każdym po 2 wątki dzięki Hyper-Threading, co daje w gruncie rzeczy 8 logicznych rdzeni.
W takim razie, jaki sposób JVM jest w stanie utworzyć sobie 10 tysięcy wątków?

1

W takim że jak liczba możliwych jednocześnie do obsługi wątków fizycznie nie równa się liczbie wątków które możesz stworzyć. Jeśli jest ich więcej to się "zmienają nawzajem".
Polecam poczytać

0

Wątki Javowe to wątki lekkie. To troszku coś innego niz wątki procesora

0
baant napisał(a):

Wątki Javowe to wątki lekkie. To troszku coś innego niz wątki procesora

Nie? W Javie 1.1 już chyba nikt nie pisze. Czy 'wątek lekki' to green thread?

0
lion137 napisał(a):

Jak rowniez https://docs.oracle.com/javase/tutorial/essential/concurrency/

E tam, są lepsze źródła :P
Musisz to przeczytać

Sory musiałem xD

1

Liczba wątków które możesz utworzyc nie ma nic wspólnego z liczba CPU. Inna sprawa "czy ma to sens", bo CPU będzie się zwyczajnie między nimi przełączać, więc jak są computation expensive, to nie ma to sensu. Ale w praktyce wiele rzeczy wymaga jakiegoś blokującego I/O. W trakcie oczekiwania na I/O może pracować sobie inny wątek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1