12.05.20222 min

Maciej OlanickiRedakcja Bulldogjob

Aplikacje Java przyśpieszą dzięki wirtualnym wątkom i nowej współbieżności

W Javie 19 pojawią się wirtualne wątki, które mogą znacząco przyśpieszyć aplikacje. Przetestować można je już teraz!

Aplikacje Java przyśpieszą dzięki wirtualnym wątkom i nowej współbieżności

Od premiery najnowszej wersji Javy, o której szerzej pisaliśmy tutaj, minęły już dwa miesiące. Nie powinno więc dziwić, że trwają już intensywne prace nad 19 wydaniem Javy. W ostatnim czasie dowiedzieliśmy się o szczególnie interesującej nowości, która przełoży się na wydajność aplikacji Java.


Project Loom, czyli współbieżność w Javie

Już w następnym wydaniu Javy, które światło dzienne ujrzy we wrześniu, developerzy będą mogli skorzystać z wersji testowej wirtualnych wątków. Programiści Java mogą słusznie kojarzyć wirtualne wątki z Project Loom, inicjatywą, która już od jakiegoś czasu miała na celu wprowadzenie do OpenJDK koncepcji współbieżności. 

Choć  wczesne rezultaty prac nad Project Loom zawitały już do maszyny wirtualnej Javy, jak i biblioteki, to jednak nie było mowy o wydaniu wersji stabilnej. Jak widać, najpewniej nie będzie takiej potrzeby, a współbieżność realizowana z użyciem wirtualnych wątków zostanie po prostu oficjalnie wprowadzona do Javy jako JEP-425.


Wirtualne wątki w Javie

Rzecz jasna wątki w Javie to nic nowego – są one wykorzystywane od 30 lat. NOwe, wirtualne wątki to jednak coś zgoła innego – nie są już to wrappery na wątki CPU (tzw. wątki platformy), lecz instancje klasy Thread. Wiele wirtualnych wątków Javy może być uruchomionych na jednym wątku CPU, a to otwiera przed developerami nowe możliwości.

Wirtualne wątki mogą współdzielić wątki CPU, nie zaś – jak to było dotychczas – stosować model, gdzie jeden wątek Javy zabiera w całości wątek procesora. Wirtualne wątki mogą być także wstrzymywane i kontynuowane w zależności od potrzeb, co nie było możliwe z wątkami platformy. 


Nowa współbieżność w Javie – skutki

Twórcy Project Loom stojący za JEP-425 są zdania, że każde zadanie w Javie docelowo powinno być uruchamiane w wirtualnym wątku. Będzie to miało znaczący wpływ na wydajność aplikacji przede wszystkim ze względu na możliwość szybkiego zakończenia wątku zawierającego niewielki task, np. wywołanie klienta HTTP.  

Wykorzystanie wirtualnych wątków nie będzie wymagało od developerów wiele pracy – zwyczajnie zamiast korzystać wątków platformy, będą oni mogli w ten sam sposób używać wirtualnych, co automatycznie przełoży się na zwiększenie wydajności aplikacji i optymalne wykorzystanie współbieżności w Javie.

Jak już wspomniano, wirtualne wątki w Javie 19 będą dostępne w wersji testowej i domyślnie będą wyłączone. Nic jednak nie stoi na przeszkodzie, by już dziś sprawdzić w testowym środowisku. Wczesne testowe buildy Javy 19 z zaimplementowanym Project Loom znaleźć można tutaj.

<p>Loading...</p>