Concurrency in java

3.037 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, News & Politik
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.037
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1.785
Aktionen
Geteilt
0
Downloads
17
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Concurrency in java

    1. 1. PROGRAMMING FOR CONCURRENCY In Java
    2. 2. WOZU?CPUs haben mehrere Kernem2b Server: 8 virtuelleDualcores in kommendenmobilen GerätenRechenleistung nutzbar machenvgl. Kaffee kochen
    3. 3. OPTIMIERUNGENWarnung: „The root of all evil“ (Donald Knuth)Multiprocessing bringt neue Komplexitätsdimension Bugtracking wird sehr sehr schwer Vorher korrekter Code kann nun fehlerhaft sein Performance kann schlechter werden (synchronisieren)Deswegen: Notwendigkeit durch Profiling „beweisen“
    4. 4. GUTE NACHRICHTMultiprocessing wird uns geschenkt in Application Server (pro Request) Multi-Prozess Umgebung (Tomcat, MySQL, ...) Libraries (nicht unser Problem) High Level Programmierung (Garbage Collector, JIT)Und einfacher gemacht durch Gute Frameworks (GCD, OpenCL, ...)
    5. 5. DREI VARIANTENSingle threadedDual threaded UI mit WorkerMassiv parallel Große Datenmengen Grafikverarbeitung, AI, Data Mining
    6. 6. BUILDING BLOCKSProzesse besitzt eigenen privaten Speicherbereich (!) Ein Programm ist meist genau ein ProzessThreads gehören zu einem Prozess mehrere Threads teilen sich Speicher
    7. 7. EINFACHES BEISPIEL Java Class: Thread run() und start() Java Interface: Runnable kann an Thread übergeben werden
    8. 8. PARALLELE FEHLERThread Interference bislang korrekter Code wird fehlerhaftMemory Consistency Annahmen über Speicherzustände stimmen nicht mehr(Deadlocks) Threads blockieren sich gegenseitig
    9. 9. SYNCHRONIZEEntwickler ist für Synchronisierungverantwortlich Designfehlersynchronized heißt: nur ein Threadsynchronized(Object)Parallele Performance
    10. 10. KOMPLEXITÄT++Optimales Locking Mehr Parallelität komplexervolatile atomic read/write nicht ausreichend
    11. 11. HILFENZustandsraum kleinhaltenImmutable Objects keine korrupten Zustände
    12. 12. HILFENKontrollierbare Anzahl Threads Thread Pool / Worker / Jobs Webserver Prinzipjava.util.concurrent.Executorsjava.util.concurrent.ThreadPoolExecutor
    13. 13. CALLABLEPool mit 3 ThreadsCallable als kleiner JobFuture<Integer>Immutable
    14. 14. SUCCESS STORYMapReduce funktionale Denkweise parallelisierung ist unabhängig
    15. 15. SUCCESS STORY 2Grafikberechnungen 800 SPUs (Radeon HD 4850)Cuda & OpenCL Rechenkernel Große Datenmengen > 1 TFLOP/s
    16. 16. FAZITRegeln zur Optimierung geltenZustandsraum klein halten (Immutable)An erfolgreichen Architekturen orientierenSingle-Thread Optimierungen haben Vorrang Java -> C vs. Single -> Multicore |CPUs| ist Maximum

    ×