Thuta Learning
Java
AdvancedProgrammingbeginner

Concurrency & Virtual Threads

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Concurrency & Virtual Threads ရဲ့language နဲ့JVM behavior ကိုရှင်းပြနိုင်ရန်
  • Normal, boundary, invalid နဲ့failure cases စမ်းနိုင်ရန်
  • Maintainable, testable Java code ရေးနိုင်ရန်

Independent blocking task တစ်ခုစီအတွက်virtual thread တစ်ခုဖန်တီးပြီးresult သို့failure အားလုံးကိုစောင့်ပါ။

ပိုပြီးနားလည်ထားရမယ့် အချက်

Concurrency သည်shared mutable state, ordering, cancellation နဲ့failure propagation ကိုdesign လုပ်ရခြင်းဖြစ်ပါတယ်။ Java 21 မှfinal ဖြစ်သောvirtual threads သည်blocking I/O workloads ကိုscale လုပ်ရန်အသုံးဝင်သော်လည်းCPU work ကိုပိုမြန်စေခြင်းမဟုတ်ဘဲpool လုပ်ရန်လည်းမလိုပါ။

လက်တွေ့မှာ ဘယ်လိုအသုံးချမလဲ

Virtual-thread-per-task executor ဖြင့်independent blocking-style tasks run လုပ်ပြီးresults/errors အားလုံးjoin လုပ်ကာexecutor lifecycle ကိုclose လုပ်ပါ။

ဒီသင်ခန်းစာပြီးရင်

java
import java.util.concurrent.Executors;

class Main {
    public static void main(String[] args) throws Exception {
        try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
            var result = executor.submit(
                () -> "Virtual: " + Thread.currentThread().isVirtual()
            );
            System.out.println(result.get());
        }
    }
}
You should see
Virtual: true

ကိုယ်တိုင်စမ်းကြည့်ရန်

Virtual-thread-per-task executor ဖြင့်independent blocking-style tasks run လုပ်ပြီးresults/errors အားလုံးjoin လုပ်ကာexecutor lifecycle ကိုclose လုပ်ပါ။

Common Mistake သတိပေးချက်

Data race ကိုthread-safe collection တစ်ခုတည်းနဲ့အလိုအလျောက်ပြေလည်မယ်ဟုယူဆခြင်း သို့မဟုတ်virtual threads ကိုscarce pooled resources လိုpool လုပ်ခြင်း။

JEP 444: Virtual ThreadsOpenJDK

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Data race ကိုthread-safe collection တစ်ခုတည်းနဲ့အလိုအလျောက်ပြေလည်မယ်ဟုယူဆခြင်း သို့မဟုတ်virtual threads ကိုscarce pooled resources လိုpool လုပ်ခြင်း။
  • Sample output တစ်ခုမှန်ရုံဖြင့် null, boundary, resource နဲ့concurrency behavior အားလုံးမှန်ပြီဟုယူဆခြင်း။

လက်တွေ့လေ့ကျင့်ခန်း

Virtual-thread-per-task executor ဖြင့်independent blocking-style tasks run လုပ်ပြီးresults/errors အားလုံးjoin လုပ်ကာexecutor lifecycle ကိုclose လုပ်ပါ။

You'll know it worked when: Virtual: true

Concurrency & Virtual Threads | Thuta Learning