سؤال

أعتقد أنه لا يوجد أي معادلة للمكتبات الموازية للمهمة (من .NET 4.0) في Java. هل هذا صحيح؟ ما هي التحسينات التي تقدمها هذه الميزة .NET التي لا تتوافق معها Java.

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

المحلول

جافا لديه java.util.concurrent الحزمة ، وهناك أيضا إطار الشوكة/الانضمام. شوكة/انضمام من المقرر إدراجه في Java 7 ، ولكن يمكن أن يكون تم تنزيله الآن وتستخدم مع جافا 6.

كتاب جيد للوصول إلى التزامن في جافا تزامن جافا في الممارسة, ، من قبل براين جويتز وآخرون.

نصائح أخرى

مكتبة هابانيرو جافا (HJ-LIB) هو تطبيق المكتبة الجديد لـ Habanero-Java (HJ) ، وهو نموذج برمجة متوازي تربوي يتم تطويره على جامعة رايس. HJ-LIB قادر على التعبير عن العديد من أشكال مختلفة من الأنماط المتوازية بما في ذلك التوازي البيانات ، التوازي خط الأنابيب ، تدفق التوازي ، التوازي الحلقة ، والتوازي الفجوة والقهر.

يدمج HJ-LIB مجموعة واسعة من بنيات البرمجة المتوازية (على سبيل المثال ، مهام ASYNC ، والعقود الآجلة ، والمهام القائمة على البيانات ، Forull ، الحواجز ، الطائرات ، المعاملات ، الجهات الفاعلة) في نموذج برمجة واحد يتيح مجموعات فريدة من هذه البنيات (على سبيل المثال ، متداخلة ، متداخلة مجموعات من المهمة والممثل التوازي).

تم تصميم HJ-Lib باستخدام تعبيرات لامدا ويمكن تشغيله على أي Java 8 JVM. يمكن استهداف JVMs الأقدم من خلال الاعتماد على أدوات تحويلات Bytecode الخارجية للتوافق. يعد HJ Runtime مسؤولاً عن تنسيق إنشاء مهام HJ وتنفيذها وإنهائها ، ويتميز بكل من جدولة مشاركة العمل وسرقة العمل.

HJ-LIB هي أيضًا أداة جذابة للمعلمين مع العديد من الموارد التعليمية المتاحة من مستوى السنة الثانية شركات 322 دورة عرضت في جامعة رايس. يمكن أيضًا استخدام هذه الموارد للتعرف على واجهة برمجة تطبيقات المكتبة. Javadoc لـ API أيضا متوفر.

إليك نسخة بسيطة من HelloWorld:

import static edu.rice.hj.Module1.*;

public class HelloWorld {

    public static void main(final String[] args) {

        launchHabaneroApp(() -> {

            finish(() -> {
                async(() -> System.out.println("Hello"));
                async(() -> System.out.println("World"));
                async(() -> System.out.println("in"));
                async(() -> System.out.println("HJ-lib"));
            });

        });
    }
}

تتوفر أمثلة أخرى لمختلف التركيبات الموازية من موقع دورة 322.

نعم. Java ليس لديه ما يعادل المهمة المكتبة الموازية - TPL (من .NET 4.0). أنت على حق في سؤالك (الكلمة الرئيسية - Net 4.0). TPL "مشترك" - مكتبة .NET Universal Uniper أي .NET Application. وهذا يعني أنه يمكنك الحصول على منطق Async مشترك مشترك لأي تطبيق .NET (WPF ، WinForms ، Xamarin.Forms ، ASP.NET ، ...) مع نهج غير متزامن (غير متزامن (UI) حقًا. جافا لا. لدى Javafx فئة مهمة خاصة غير حظر ، وأتأرجح - عمال الخلفية ، Android - النهج الخاص. ... حتى لا تحتوي حزمة Java على اسم util.concurrency على أي حلول غير قابلة للتجميد (Javafx ، Swing).

من ما أعرف أنه لا يوجد ما يعادل في جافا.

كتبت مكتبة مهمة Java مستوحاة على TPL. إنه لا يدعم جميع ميزات TPL ولكنه قام بتركيب متطلباتي في ذلك الوقت.

جيثب: https://github.com/brunomndantas/tpl4j

مافن: https://mvnrepository.com/artifact/com.github.brunomndantas/tpl4j

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