যখন থ্রেড টিএ কল করে টিবি.জাইন () তার কারণগুলি কেবল টিবি মারা যাওয়ার জন্য বা টিএ নিজেই বাধা হওয়ার জন্য অপেক্ষা করে না তবে টিবি থ্রেডে টিবি.জাইনের () পরে শেষ বিবৃতি এবং পরবর্তী বিবৃতিতে সম্পর্কের আগে ঘটে।
কোনও থ্রেডের সমস্ত ক্রিয়াকলাপ ঘটে যায় - অন্য কোনও থ্রেড সফলভাবে সেই থ্রেডের একটি যোগদান () থেকে ফিরে আসার আগে।
এর অর্থ প্রোগ্রাম
class App {
// shared, not synchronized variable = bad practice
static int sharedVar = 0;
public static void main(String[] args) throws Exception {
Thread threadB = new Thread(() -> {sharedVar = 1;});
threadB.start();
threadB.join();
while (true)
System.out.print(sharedVar);
}
}
সর্বদা মুদ্রণ
>> 1111111111111111111111111 ...
কিন্তু প্রোগ্রাম
class App {
// shared, not synchronized variable = bad practice
static int sharedVar = 0;
public static void main(String[] args) throws Exception {
Thread threadB = new Thread(() -> {sharedVar = 1;});
threadB.start();
// threadB.join(); COMMENT JOIN
while (true)
System.out.print(sharedVar);
}
}
না শুধুমাত্র মুদ্রণ করতে পারেন
>> 0000000000 ... 000000111111111111111111111111 ...
কিন্তু
>> 00000000000000000000000000000000000000000000 ...
সর্বদা কেবল '0'।
যেহেতু জাভা মেমোরি মডেলকে হেডপেন-পূর্বের সম্পর্ক ছাড়াই থ্রেডবি থেকে মূল থ্রেডে 'শেয়ারডবার'-এর নতুন মান' ট্রান্সফারিং 'প্রয়োজন হয় না (থ্রেড শুরু, থ্রেড জয়েন,' সিঙ্কনাইজড 'কীওয়ার্ডের ব্যবহার, অ্যাটমিকএক্সএক্সএক্স ভেরিয়েবলের ব্যবহার ইত্যাদি)।