স্কোপড ভ্যালু (Scoped Values)
ThreadLocal-এর অসুবিধাগুলো এড়িয়ে কল স্ট্যাক (call stacks) জুড়ে নিরাপদে ডেটা শেয়ার করুন।
কোড তুলনা
✕ Java 8
static final ThreadLocal<User> CURRENT =
new ThreadLocal<>();
void handle(Request req) {
CURRENT.set(authenticate(req));
try { process(); }
finally { CURRENT.remove(); }
}
✓ Java 25
static final ScopedValue<User> CURRENT =
ScopedValue.newInstance();
void handle(Request req) {
ScopedValue.where(CURRENT,
authenticate(req)
).run(this::process);
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
ইমিউটেবল (Immutable)
অন্য মেথডগুলো স্কোপড ভ্যালু পড়তে পারলেও তা পরিবর্তন করতে পারে না।
অটো ক্লিনআপ (Auto Cleanup)
ম্যানুয়াল remove() মেথডের প্রয়োজন নেই – ভ্যালুটি ব্লকের স্কোপ অনুযায়ী স্বয়ংক্রিয়ভাবে পরিচালিত হয়।
ভার্চুয়াল-থ্রেড সেফ (Virtual-thread Safe)
লক্ষ লক্ষ ভার্চুয়াল থ্রেডের সাথে এটি দক্ষতার সাথে কাজ করে।
পুরনো পদ্ধতি
ThreadLocal
আধুনিক পদ্ধতি
ScopedValue
JDK থেকে
25
কঠিনতা
উন্নত
JDK সমর্থন
স্কোপড ভ্যালু (Scoped Values)
উপলব্ধ
JDK 25 LTS (JEP 506, সেপ্টেম্বর 2025) এ চূড়ান্ত হয়েছে।
কীভাবে কাজ করে
ScopedValue ইমিউটেবল, উত্তরাধিকারযোগ্য (inheritable) এবং স্কোপ-সীমিত (scope-limited) কনটেক্সট প্রদান করে। ThreadLocal-এর বিপরীতে, স্কোপড ভ্যালুগুলো স্বয়ংক্রিয়ভাবে ক্লিনআপ হয়, ভার্চুয়াল থ্রেডগুলির সাথে কাজ করে এবং অন্য কোনো মেথড (callees) দ্বারা পরিবর্তন করা যায় না।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ