English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الفرق بين volatile و transient في Java

يستخدم مفتاح التمرد في بيئات متعددة الخيوط حيث تقرأ وتكتب اثنتان من الخيوط نفس المتغير. سينقل مفتاح التمرد التغييرات مباشرة إلى الذاكرة الرئيسية بدلاً من المخزن المؤقت للمعالج. 

من جهة أخرى، يتم استخدام مفتاح الكلمة المؤقتة أثناء عملية التمرد. لا يمكن أن تكون الحقول المميزة كجزء من التمرد والتعديل. لا نريد حفظ قيمة أي متغير، لذا سنستخدم مفتاح الكلمة المؤقتة مع هذا المتغير. 

الرقمالمفتاحالقابل للتغيرالجملية
1
الأساسية 
يستخدم مفتاح التمرد لتحديث التغييرات مباشرة إلى الذاكرة الرئيسية
يستخدم مفتاح الكلمة المؤقتة لاستبعاد المتغيرات أثناء التمرد 
2.
القيم الافتراضية 
لا يستخدم التمرد الافتراضية في التمرد
في فترة التعديل، سيتم إعداد المتغيرات المؤقتة باستخدام القيم الافتراضية 
3
ثابت 
يمكن استخدام المتغيرات الثابتة مع المتغيرات الثابتة.
لا يمكن استخدام الكلمة المفتاحية static معًا
4
في النهاية 
يمكن استخدام الكلمة المفتاحية final معًا
لا يمكن استخدام الكلمة المفتاحية transient مع الكلمة المفتاحية final معًا

مثال على المثالية

//A sample class that uses transient keyword to
//تخطي التسلسل
class TransientExample implements Serializable {
   transient int age;
   //تحديد الحقول الأخرى
   private String name;
   private String address;
   //كود آخر
}

مثال على المادة المسيولة

class VolatileExmaple extends Thread{
   boolean volatile isRunning = true;
   public void run() {
      long count = 0;
      while (isRunning) {
         count++;
      }
      System.out.println("线程终止。" + count);
   }
   public static void main(String[] args) throws InterruptedException {
      VolatileExmaple t = new VolatileExmaple();
      t.start();
      Thread.sleep(2000);
      t.isRunning = false;
      t.join();
      System.out.println("isRunning set to " + t.isRunning);
   }
}
سيحبك هذا