Sanal İş Parçacıkları Nedir
Java 21'de hafif iş parçacıkları
Sanal İş Parçacıkları Nedir, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Sanal İş Parçacıklarına Hoş Geldiniz
Sanal iş parçacıkları, Java 21 ile nihai bir özellik olarak kullanıma sunuldu (JEP 444). Bunlar, işletim sistemi yerine JVM tarafından yönetilen hafif iş parçacıklarıdır.
Amaç basittir: Milyonlarca eşzamanlı göreve ölçeklenebilirken doğrudan istek başına iş parçacığı kodu yazabilmenizi sağlamak.
Eski Sorun
Geleneksel bir platform iş parçacığı, bir OS iş parçacığıyla bire bir eşleşir. Her biri yaklaşık bir megabayt yığın belleği kullanır ve oluşturulması maliyetlidir.
Bu nedenle aynı anda yalnızca birkaç bin iş parçacığı çalıştırabilirsiniz. Engelleyici G/Ç, beklerken bir OS iş parçacığının tamamını meşgul eder.
Sanal İş Parçacıkları Nasıl Farklıdır?
Bir sanal iş parçacığı bir OS iş parçacığına sahip değildir. Birçok sanal iş parçacığı, küçük bir taşıyıcı platform iş parçacığı havuzuna çoğullanır.
- Oluşturulması kolaydır (milisaniyede binlerce tane)
- Çok az bellek kullanır
- Engelleme yalnızca sanal iş parçacığını park eder ve taşıyıcıyı serbest bırakır
Bağlama ve Ayırma
Sanal bir iş parçacığı çalışırken bir taşıyıcı iş parçacığına bağlanır. Engelleyici bir işlemle karşılaştığında ayrılır ve taşıyıcıyı serbest bırakarak diğer işlerin ilerlemesini sağlar.
Bu park etme ve sürdürme işlemi otomatik olarak gerçekleşir. Kodunuz normal engelleyici kod gibi okunur.
İlk Sanal İş Parçacığı
İşte mümkün olan en basit örnek. Thread.ofVirtual().start(...) bir sanal iş parçacığı başlatır, join() ise onu bekler.
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread vt = Thread.ofVirtual().start(() ->
System.out.println("Hello from a virtual thread!"));
vt.join();
System.out.println("Main is done.");
}
}Sanal Olduğunu Doğrulama
Her Thread, isVirtual() metodunu sunar. Bu sayede kodunuzun ne tür bir iş parçacığında çalıştığını doğrulayabilirsiniz.
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread vt = Thread.ofVirtual().start(() -> {
System.out.println("isVirtual: " + Thread.currentThread().isVirtual());
});
vt.join();
}
}Çok Sayıda Göreve Ölçekleme
Sanal iş parçacıkları ucuz olduğundan on binlercesini başlatmak tamamen normaldir. Burada 10.000 sanal iş parçacığı başlatıyoruz.
import java.util.concurrent.atomic.AtomicInteger;
public class Main {
public static void main(String[] args) throws InterruptedException {
AtomicInteger counter = new AtomicInteger();
Thread[] threads = new Thread[10_000];
for (int i = 0; i < threads.length; i++) {
threads[i] = Thread.ofVirtual().start(counter::incrementAndGet);
}
for (Thread t : threads) t.join();
System.out.println("Completed: " + counter.get());
}
}Sanal İş Parçacıklarını Adlandırma
Başlatmadan önce oluşturucuyu kullanarak daha kolay hata ayıklamak için bir sanal iş parçacığına ad verebilirsiniz.
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread vt = Thread.ofVirtual()
.name("worker-1")
.start(() ->
System.out.println("Running on: " + Thread.currentThread().getName()));
vt.join();
}
}Aynı API, Yeni Motor
Sanal iş parçacıkları, zaten bildiğiniz Thread API'sinin tamamen aynısını uygular. Hâlâ start, join, sleep ve interrupt kullanırsınız.
Bu, Thread ve Runnable üzerine kurulmuş mevcut kitaplıkların değişiklik yapılmadan çalışacağı anlamına gelir.
Ne Zaman Kullanılmalı
Sanal iş parçacıkları G/Ç ağırlıklı iş yüklerinde mükemmeldir: web sunucuları, veritabanı çağrıları ve uzak uygulama programlama arayüzü istekleri.
İşlemciye bağlı sayı hesaplamalarında daha hızlı değildir. Bu durumda hâlâ çekirdek sayınızla sınırlısınız.
Havuz Değildir
Önemli bir bakış açısı değişikliği şudur: sanal iş parçacıklarını havuzlamazsınız. Her görev için yeni bir tane oluşturun ve görev tamamlandığında sona ermesine izin verin.
Havuzlama, pahalı kaynakları yeniden kullanmak için vardır. Sanal iş parçacıkları ucuz olduğundan onları havuzlamak kötü bir tasarım kalıbıdır.
Hızlı Kontrol
Sanal iş parçacıkları hakkındaki anlayışınızı sınayın.
Özet
Sanal iş parçacıklarının ne olduğunu ve neden önemli olduklarını öğrendiniz:
- Hafif, JVM tarafından yönetilen ve Java 21 ile son hâline getirilen iş parçacıklarıdır
- Bağlama ve ayırma yoluyla taşıyıcı iş parçacıkları üzerinde çoklanırlar
- Yüksek eşzamanlılığa sahip G/Ç ağırlıklı işler için idealdirler
- Aynı
ThreadAPI'sini kullanırlar, ancak havuzlanmak yerine görev başına oluşturulurlar
Sırada, onları oluşturmanın farklı yollarını öğreneceksiniz.
Sıkça Sorulan Sorular
“Sanal İş Parçacıkları Nedir” dersi ücretsiz mi?
Evet — “Sanal İş Parçacıkları Nedir” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Sanal İş Parçacıkları Nedir” dersinde ne öğreneceğim?
Java 21'de hafif iş parçacıkları Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Sanal İş Parçacıkları Nedir” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Sanal İş Parçacıkları Nedir
- Sanal İş Parçacıkları Oluşturma
- Platform ve Sanal İş Parçacıkları
- Tuzaklar: Sabitleme ve ThreadLocals