سؤال

كنت أطالع عملاء الأثرياء القذرين لاحظت مؤخرًا أنه على الرغم من أن إصدار Java هو 6، إلا أنه لم يتم ذكر الإطار المتزامن.لذلك، يتحدثون عن java.util.Timer وjavax.swing.Timer ولكن ليس عن ExecutorService.

قرأت عن مزايا ExecutorService في السؤال "جافا الموقت مقابل ExecutorService" وقررت استخدام الأخير على الأول.لكن الكتاب يتحدث عن javax.swing.Timer ومزايا كونه مخصصًا لتطوير Swing.

إذًا، هل هذا يعني أنه بالنسبة لتطوير Swing (الأزرار المتحركة وما إلى ذلك)، فإن javax.swing.Timer لا يزال خيارًا أفضل أم أن هناك فئة ذات صلة في Concurrent Framework الجديد الذي يحل محله؟

هل كانت مفيدة؟

المحلول

وحسنا الموقت سوينغ على الأقل يعمل على بتوقيت شرق الولايات المتحدة لذلك لم يكن لديك لالتفاف كل شيء مع المكالمات إلى invokeLater. أنه يربط أيضا لطيف في مع سوينغ كما أنه يستخدم تطبيقات، ActionListeners وغيرها من الطبقات ذات الصلة سوينغ.

وكنت العصا مع الموقت مراجيح للمهام المتعلقة سوينغ واستخدام حزمة المتزامنة جديدة للأشياء التي لا تنطوي على تحديث واجهة المستخدم الرسومية.

وإلقاء نظرة على عن طريق المدد الزمنية في تطبيقات سوينغ كما قد تحتوي على مزيد من المعلومات في التأرجح (آسف) هذا القرار.

نصائح أخرى

وأود أن أقول إن لبسيط الاشياء المتعلقة البديل الخيار الأفضل هو javax.swing.Timer بسبب المزايا المذكورة <لأ href = "http://java.sun.com/docs/books/tutorial/uiswing/misc/timer. أتش تي أم أل "يختلط =" noreferrer "> هنا .

<اقتباس فقرة>   

لاحظ أن مهمة الموقت سوينغ هي   أجريت في إيفاد الحدث   مسلك. وهذا يعني أن المهمة يمكن   بأمان التعامل مع المكونات، لكنه   يعني أيضا أنه ينبغي للمهمة   تنفيذ بسرعة.

وعلى الجانب الآخر، إذا كنت بحاجة إلى إجراء غير أرجوحة ذات الصلة أو عمليات معالجة أكثر تعقيدا / مطولة، وExecutorService هي قوية جدا وبالتأكيد وسيلة للذهاب.

مجرد اقتراح يوضح ما نصح به برونو، أحد الأنماط للاستفادة من أدوات التزامن الممتازة Java 1.5+ دون تعطيل Swing هو أن يكون لديك ExecutorService قم بكل الرفع الثقيل (كما قال برونو) ولكن بمجرد الانتهاء من ذلك، فإن ExecutorService يجب أن يقوم مؤشر الترابط بتسليم التفاعل مع مكونات واجهة المستخدم الفعلية إلى مؤشر ترابط AWT في Runnable باستخدام أحد:

  • javax.swing.SwingUtilities.invokeAndWait(Runnable doRun)
  • javax.swing.SwingUtilities.invokeLater(Runnable doRun)

تمر هذه الأساليب بالتشغيل ليتم تنفيذه بواسطة خيط AWT.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top