PROGRAMMING FOR  CONCURRENCY      In Java
WOZU?CPUs haben mehrere Kernem2b Server: 8 virtuelleDualcores in kommendenmobilen GerätenRechenleistung nutzbar machenvgl....
OPTIMIERUNGENWarnung: „The root of all evil“ (Donald Knuth)Multiprocessing bringt neue Komplexitätsdimension  Bugtracking ...
GUTE NACHRICHTMultiprocessing wird uns geschenkt in  Application Server (pro Request)  Multi-Prozess Umgebung (Tomcat, MyS...
DREI VARIANTENSingle threadedDual threaded  UI mit WorkerMassiv parallel  Große Datenmengen  Grafikverarbeitung, AI, Data ...
BUILDING BLOCKSProzesse  besitzt eigenen privaten Speicherbereich (!)  Ein Programm ist meist genau ein ProzessThreads  ge...
EINFACHES BEISPIEL Java Class: Thread   run() und start() Java Interface: Runnable   kann an Thread übergeben   werden
PARALLELE FEHLERThread Interference  bislang korrekter Code wird fehlerhaftMemory Consistency  Annahmen über Speicherzustä...
SYNCHRONIZEEntwickler ist für Synchronisierungverantwortlich  Designfehlersynchronized heißt: nur ein Threadsynchronized(O...
KOMPLEXITÄT++Optimales Locking  Mehr Parallelität  komplexervolatile  atomic read/write  nicht ausreichend
HILFENZustandsraum kleinhaltenImmutable Objects  keine korrupten Zustände
HILFENKontrollierbare Anzahl Threads  Thread Pool / Worker / Jobs  Webserver Prinzipjava.util.concurrent.Executorsjava.uti...
CALLABLEPool mit 3 ThreadsCallable als kleiner JobFuture<Integer>Immutable
SUCCESS STORYMapReduce funktionale Denkweise parallelisierung ist unabhängig
SUCCESS STORY 2Grafikberechnungen  800 SPUs (Radeon HD 4850)Cuda & OpenCL  Rechenkernel  Große Datenmengen  > 1 TFLOP/s
FAZITRegeln zur Optimierung geltenZustandsraum klein halten (Immutable)An erfolgreichen Architekturen orientierenSingle-Th...
Concurrency in java
Concurrency in java
Nächste SlideShare
Wird geladen in …5
×

Concurrency in java

3.057 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie, News & Politik
  • Als Erste(r) kommentieren

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

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

×