এর বর্তমান বাস্তবায়ন SecureRandom
থ্রেড নিরাপদ, বিশেষত দুটি রূপান্তর পদ্ধতি nextBytes(bytes[])
এবং setSeed(byte[])
সিঙ্ক্রোনাইজ করা হয়েছে।
ঠিক আছে, যতদূর আমি বলতে সক্ষম হয়েছি, সমস্ত মিউটেশন পদ্ধতি অবশেষে methods দুটি পদ্ধতির মাধ্যমে প্রবর্তিত হয় এবং এটি নিশ্চিত করতে SecureRandom
কয়েকটি পদ্ধতিকে ওভাররাইড Random
করে। যা কাজ করে তবে ভবিষ্যতে বাস্তবায়ন পরিবর্তিত হলে ভঙ্গুর হতে পারে।
SecureRandom
প্রথমে ম্যানুয়ালি সিঙ্ক্রোনাইজ করা ভাল সমাধান । এর অর্থ প্রতিটি কল স্ট্যাক একই জিনিসটিতে দুটি লক অর্জন করবে, তবে এটি আধুনিক জেভিএমগুলিতে সাধারণত খুব সস্তা। এটি হ'ল সুস্পষ্টভাবে নিজেকে সিঙ্ক্রোনাইজ করার ক্ষেত্রে খুব বেশি ক্ষতি হয় না। উদাহরণ স্বরূপ:
SecureRandom rnd = ...;
byte[] b = new byte[NRANDOM_BYTES];
synchronized (rnd) {
rnd.nextBytes(b);
}