Java - jak to jest z wątkami?

Java - jak to jest z wątkami?
BE
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 2 lata
  • Postów:17
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ć:

Kopiuj
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?

edytowany 1x, ostatnio: benczz
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
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ć


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4935
0

edytowany 1x, ostatnio: lion137
baant
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
  • Postów:524
0

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

Patryk27
Dlaczego wątki lekkie? Skąd nazwa?
FE
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 3 lata
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?


edytowany 2x, ostatnio: Fedaykin
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.