Forwarded from Xurshidbek Kurbanov
#virtual #thread #javafuture
Java #BackEnd dan interview qilsam #Thread haqida 3 ta savol beraman.
1- Main thread nima va request larni faqat main thread olishda qanday muammo bor?
2- Request larni Main thread emas alohida yangi Thread da olish qanday muammo bor?
3- Yangi Thread muammosini Thread Pool qanday hal qiladi?
Ular qatoriga #Virtual #Thread ham qo’shildi, u #Javaning #kelajagi sifatida ko’rilmoqda. Lightweight threaded model 2018-yil #ProjectLoom bilan birga ishga tushilgan va 2023 yilda #JDK21 ning xususiyati sifatida qo’shildi. Chuqurroq kirib Thread va Virtual Thread farqlarini solishtirib ko’rdim.
#Thread:
- 1,000,000 ta threadlarni ishga tushirish: ~ 31.64 sekund
- Platform Thread
- Scheduling by OS
- Kernel thread, 1:1 mapping
- Runnable
#VirtualThread:
- 1,000,000 ta threadlarni ishga tushirish: ~ 0.38 sekund
- Virtual Thread
- Scheduling by JVM
- Carrier thread, 1:N mapping
- Continuation
🔷 Join @xurshidbek_kurbanov
Java #BackEnd dan interview qilsam #Thread haqida 3 ta savol beraman.
1- Main thread nima va request larni faqat main thread olishda qanday muammo bor?
2- Request larni Main thread emas alohida yangi Thread da olish qanday muammo bor?
3- Yangi Thread muammosini Thread Pool qanday hal qiladi?
Ular qatoriga #Virtual #Thread ham qo’shildi, u #Javaning #kelajagi sifatida ko’rilmoqda. Lightweight threaded model 2018-yil #ProjectLoom bilan birga ishga tushilgan va 2023 yilda #JDK21 ning xususiyati sifatida qo’shildi. Chuqurroq kirib Thread va Virtual Thread farqlarini solishtirib ko’rdim.
#Thread:
- 1,000,000 ta threadlarni ishga tushirish: ~ 31.64 sekund
- Platform Thread
- Scheduling by OS
- Kernel thread, 1:1 mapping
- Runnable
#VirtualThread:
- 1,000,000 ta threadlarni ishga tushirish: ~ 0.38 sekund
- Virtual Thread
- Scheduling by JVM
- Carrier thread, 1:N mapping
- Continuation
🔷 Join @xurshidbek_kurbanov
Forwarded from Xurshidbek Kurbanov
#virtual #thread #future #of #java
Virtual Thread, thread yaratish va ishga tushurishda tez ekanini oldingi postimizda aytib o’tgandik. Yana bir yangilikni ko'rdim yani, “#VirtualThread - #Nonblocking I/O ni qo’llab quvvatlaydi“ #Tochnami ? Odatda Blocking I/O dan qutulish uchun Spring #WebFlux & #Netty lar ishlatilinadi. Buni rost ekanini isbotlash uchun quyidagicha test case yaratildi.
1- Tomcat thread 10 ta
2- 10 sekundda response qaytaratigan API
3- Bir vaqtning o’zida 100 ta request
Time = (100 requests) / (10 tomcat threads) * (10 second API call) = 100 sec
Oddiy #PlatformThread dan foydalansak yuqoridagi testimiz 110 sekund atrofida vaqt sarflaganini va bu testimizni #VirtualThread ni ishlatib qilganimizda esa 60 sekund vaqt sarflaganini ko’rdik. Xulosa, Virtual Thread Nonblocking I/O ni qullab quvvatlaydi va bunga erishishda Continuation yield dan foydalanadi. #NIO
🔷 Join @xurshidbek_kurbanov
Virtual Thread, thread yaratish va ishga tushurishda tez ekanini oldingi postimizda aytib o’tgandik. Yana bir yangilikni ko'rdim yani, “#VirtualThread - #Nonblocking I/O ni qo’llab quvvatlaydi“ #Tochnami ? Odatda Blocking I/O dan qutulish uchun Spring #WebFlux & #Netty lar ishlatilinadi. Buni rost ekanini isbotlash uchun quyidagicha test case yaratildi.
1- Tomcat thread 10 ta
2- 10 sekundda response qaytaratigan API
3- Bir vaqtning o’zida 100 ta request
Time = (100 requests) / (10 tomcat threads) * (10 second API call) = 100 sec
Oddiy #PlatformThread dan foydalansak yuqoridagi testimiz 110 sekund atrofida vaqt sarflaganini va bu testimizni #VirtualThread ni ishlatib qilganimizda esa 60 sekund vaqt sarflaganini ko’rdik. Xulosa, Virtual Thread Nonblocking I/O ni qullab quvvatlaydi va bunga erishishda Continuation yield dan foydalanadi. #NIO
🔷 Join @xurshidbek_kurbanov