Your SlideShare is downloading. ×
0
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Concurrency in java
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Concurrency in java

2,770

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,770
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. PROGRAMMING FOR CONCURRENCY In Java
    • 2. WOZU?CPUs haben mehrere Kernem2b Server: 8 virtuelleDualcores in kommendenmobilen GerätenRechenleistung nutzbar machenvgl. Kaffee kochen
    • 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. 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. DREI VARIANTENSingle threadedDual threaded UI mit WorkerMassiv parallel Große Datenmengen Grafikverarbeitung, AI, Data Mining
    • 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. EINFACHES BEISPIEL Java Class: Thread run() und start() Java Interface: Runnable kann an Thread übergeben werden
    • 8. PARALLELE FEHLERThread Interference bislang korrekter Code wird fehlerhaftMemory Consistency Annahmen über Speicherzustände stimmen nicht mehr(Deadlocks) Threads blockieren sich gegenseitig
    • 9. SYNCHRONIZEEntwickler ist für Synchronisierungverantwortlich Designfehlersynchronized heißt: nur ein Threadsynchronized(Object)Parallele Performance
    • 10. KOMPLEXITÄT++Optimales Locking Mehr Parallelität komplexervolatile atomic read/write nicht ausreichend
    • 11. HILFENZustandsraum kleinhaltenImmutable Objects keine korrupten Zustände
    • 12. HILFENKontrollierbare Anzahl Threads Thread Pool / Worker / Jobs Webserver Prinzipjava.util.concurrent.Executorsjava.util.concurrent.ThreadPoolExecutor
    • 13. CALLABLEPool mit 3 ThreadsCallable als kleiner JobFuture<Integer>Immutable
    • 14. SUCCESS STORYMapReduce funktionale Denkweise parallelisierung ist unabhängig
    • 15. SUCCESS STORY 2Grafikberechnungen 800 SPUs (Radeon HD 4850)Cuda & OpenCL Rechenkernel Große Datenmengen > 1 TFLOP/s
    • 16. FAZITRegeln zur Optimierung geltenZustandsraum klein halten (Immutable)An erfolgreichen Architekturen orientierenSingle-Thread Optimierungen haben Vorrang Java -> C vs. Single -> Multicore |CPUs| ist Maximum

    ×