0Pricing
Java Academy · Ders

Sanal İş Parçacıkları Oluşturma

Thread.ofVirtual ve yürütücüler

Sanal İş Parçacıkları Oluşturma, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 2. 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ı Oluşturma Yolları

Java, sanal iş parçacıkları oluşturmak için çeşitli giriş noktaları sunar. En önemli ikisi Thread.ofVirtual() oluşturucusu ve Executors.newVirtualThreadPerTaskExecutor() fabrikasıdır.

Bu derste her birini inceleyeceksiniz.

Oluşturucu: start

Thread.ofVirtual() bir oluşturucu döndürür. .start(runnable) çağrısı, iş parçacığını oluşturur ve hemen başlatır.

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Thread t = Thread.ofVirtual().start(() ->
            System.out.println("Started directly"));
        t.join();
    }
}

Oluşturucu: unstarted

İş parçacığını yapılandırıp daha sonra başlatmak istediğinizde .unstarted(runnable) kullanın.

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Thread t = Thread.ofVirtual().unstarted(() ->
            System.out.println("Started later"));
        System.out.println("Before start, alive? " + t.isAlive());
        t.start();
        t.join();
    }
}

Yeniden Kullanılabilir Fabrika

Oluşturucu, .factory() aracılığıyla bir ThreadFactory üretebilir. newThread çağrılarının her biri yeni bir sanal iş parçacığı sağlar.

import java.util.concurrent.ThreadFactory;

public class Main {
    public static void main(String[] args) throws InterruptedException {
        ThreadFactory factory = Thread.ofVirtual().name("job-", 0).factory();
        Thread a = factory.newThread(() ->
            System.out.println(Thread.currentThread().getName()));
        Thread b = factory.newThread(() ->
            System.out.println(Thread.currentThread().getName()));
        a.start(); b.start();
        a.join(); b.join();
    }
}

Pratik Yöntem

Thread.startVirtualThread(runnable), adsız bir sanal iş parçacığını tek çağrıda oluşturup başlatmanın kısa yoludur.

public class Main {
    public static void main(String[] args) throws InterruptedException {
        Thread t = Thread.startVirtualThread(() ->
            System.out.println("One-liner virtual thread"));
        t.join();
    }
}

Yürütücü Yaklaşımı

Görev odaklı kodlar için Executors.newVirtualThreadPerTaskExecutor() kullanmayı tercih edin. Bu yürütücü, gönderilen her görev için yeni bir sanal iş parçacığı oluşturur.

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
    public static void main(String[] args) {
        try (ExecutorService exec = Executors.newVirtualThreadPerTaskExecutor()) {
            exec.submit(() -> System.out.println("task one"));
            exec.submit(() -> System.out.println("task two"));
        }
        System.out.println("All tasks submitted and completed");
    }
}

Kaynaklarla Deneme Neden Kullanılmalı

ExecutorService, Java 19'dan beri AutoCloseable uygular. Bu nesneyi bir kaynaklarla deneme bloğunda kapatmak, gönderilen tüm görevlerin tamamlanmasını bekler.

Bu sayede elle shutdown ve awaitTermination çağrıları yapmadan temiz ve yapılandırılmış bir kapatma elde edersiniz.

Çok Sayıda Görev Gönderme

Görev başına çalışan yürütücü, çok büyük görev sayılarını zahmetsizce yönetir. Her görev kendi sanal iş parçacığını alır.

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;

public class Main {
    public static void main(String[] args) {
        AtomicInteger sum = new AtomicInteger();
        try (ExecutorService exec = Executors.newVirtualThreadPerTaskExecutor()) {
            for (int i = 1; i <= 1000; i++) {
                final int n = i;
                exec.submit(() -> sum.addAndGet(n));
            }
        }
        System.out.println("Sum 1..1000 = " + sum.get());
    }
}

Sonuçları Gelecek Nesnesiyle Toplama

submit bir Future döndürür; böylece dönüş değerlerini diğer yürütücülerde olduğu gibi toplayabilirsiniz.

import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) throws Exception {
        try (ExecutorService exec = Executors.newVirtualThreadPerTaskExecutor()) {
            Future<Integer> f = exec.submit(() -> 6 * 7);
            System.out.println("Result: " + f.get());
        }
    }
}

Oluşturucu ve Yürütücü

Amacınıza göre seçim yapın:

  • Tek seferlik iş parçacıkları veya özel adlandırma için Oluşturucu / startVirtualThread
  • Görev koleksiyonları göndermek ve sonuçları toplamak için newVirtualThreadPerTaskExecutor

Her ikisi de her iş birimi için bir sanal iş parçacığı oluşturur; tam olarak istediğiniz şey budur.

Sanal Yürütücüyü Önbelleğe Almayın

Tek bir sanal iş parçacığı yürütücüsünü sabit bir çalışan havuzuymuş gibi yeniden kullanmayın. Yürütücünün kendisini yeniden kullanmanızda sakınca yoktur; ancak her görevin yepyeni bir iş parçacığı başlattığını unutmayın.

Önemli nokta şudur: İş parçacıkları havuzlanmaz, yalnızca görev gönderimi kolaylaştırılır.

Hızlı Kontrol

Her biri kendi sanal iş parçacığında çalışacak büyük bir görev grubunu çalıştırmanın en iyi yolunu seçin.

Özet

Artık sanal iş parçacıklarını nasıl oluşturacağınızı biliyorsunuz:

  • Thread.ofVirtual().start(...) ve .unstarted(...)
  • Thread.startVirtualThread(...) tek satırlık çağrısı
  • Yeniden kullanılabilir bir ThreadFactory için .factory()
  • Kaynaklarla denemeyle birlikte Executors.newVirtualThreadPerTaskExecutor()

Sırada: platform ve sanal iş parçacıkları arasında seçim yapmak var.

Sıkça Sorulan Sorular

“Sanal İş Parçacıkları Oluşturma” dersi ücretsiz mi?

Evet — “Sanal İş Parçacıkları Oluşturma” 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ı Oluşturma” dersinde ne öğreneceğim?

Thread.ofVirtual ve yürütücüler 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 2. dersidir.

“Sanal İş Parçacıkları Oluşturma” 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

  1. Sanal İş Parçacıkları Nedir
  2. Sanal İş Parçacıkları Oluşturma
  3. Platform ve Sanal İş Parçacıkları
  4. Tuzaklar: Sabitleme ve ThreadLocals
← Java Academy Sayfasına Dön