অন্যান্য উত্তরে বর্ণিত হিসাবে, আপনার কোডটি থ্রেড নিরাপদ নয় যেহেতু স্ট্যাটিক পদ্ধতি increment()
লক করে ক্লাস মনিটর এবং অ-স্থিতিক পদ্ধতিতে decrement()
লজ অবজেক্ট মনিটর।
এই কোড উদাহরণের জন্য, synchronzed
কীওয়ার্ড ব্যবহার না করে আরও ভাল সমাধান বিদ্যমান । থ্রেড সুরক্ষা অর্জন করতে আপনাকে অ্যাটমিকআইন্টিজার ব্যবহার করতে হবে।
থ্রেড নিরাপদ ব্যবহার করে AtomicInteger
:
import java.util.concurrent.atomic.AtomicInteger;
class ThreadSafeClass extends Thread {
private static AtomicInteger count = new AtomicInteger(0);
public static void increment() {
count.incrementAndGet();
}
public static void decrement() {
count.decrementAndGet();
}
public static int value() {
return count.get();
}
}
increment
) এটি থ্রেড নিরাপদ। বা যদি আপনি কিছু লকিং অবজেক্ট ব্যবহার করেন। যেমনটি আমি বলেছি, আমি জাভা সম্পর্কে জানি না - আমার মন্তব্য সি # জ্ঞান থেকে এসেছে।