SlideShare ist ein Scribd-Unternehmen logo
1 von 18
PROGRAMMING FOR
  CONCURRENCY
      In Java
WOZU?
CPUs haben mehrere Kerne

m2b Server: 8 virtuelle

Dualcores in kommenden
mobilen Geräten

Rechenleistung nutzbar machen

vgl. Kaffee kochen
OPTIMIERUNGEN

Warnung: „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“
GUTE NACHRICHT
Multiprocessing 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, ...)
DREI VARIANTEN

Single threaded

Dual threaded

  UI mit Worker

Massiv parallel

  Große Datenmengen

  Grafikverarbeitung, AI, Data Mining
BUILDING BLOCKS

Prozesse

  besitzt eigenen privaten Speicherbereich (!)

  Ein Programm ist meist genau ein Prozess

Threads

  gehören zu einem Prozess

  mehrere Threads teilen sich Speicher
EINFACHES BEISPIEL

 Java Class: Thread

   run() und start()



 Java Interface: Runnable

   kann an Thread übergeben
   werden
PARALLELE FEHLER

Thread Interference

  bislang korrekter Code wird fehlerhaft

Memory Consistency

  Annahmen über Speicherzustände stimmen nicht mehr

(Deadlocks)

  Threads blockieren sich gegenseitig
SYNCHRONIZE

Entwickler ist für Synchronisierung
verantwortlich

  Designfehler

synchronized heißt: nur ein Thread

synchronized(Object)

Parallele Performance
KOMPLEXITÄT++

Optimales Locking

  Mehr Parallelität

  komplexer

volatile

  atomic read/write

  nicht ausreichend
HILFEN


Zustandsraum klein
halten

Immutable Objects

  keine korrupten Zustände
HILFEN

Kontrollierbare Anzahl Threads

  Thread Pool / Worker / Jobs

  Webserver Prinzip

java.util.concurrent.Executors

java.util.concurrent.ThreadPoolExecutor
CALLABLE


Pool mit 3 Threads

Callable als kleiner Job

Future<Integer>

Immutable
SUCCESS STORY


MapReduce

 funktionale
 Denkweise

 parallelisierung ist
 unabhängig
SUCCESS STORY 2

Grafikberechnungen

  800 SPUs (Radeon HD 4850)

Cuda & OpenCL

  Rechenkernel

  Große Datenmengen

  > 1 TFLOP/s
FAZIT

Regeln zur Optimierung gelten

Zustandsraum klein halten (Immutable)

An erfolgreichen Architekturen orientieren

Single-Thread Optimierungen haben Vorrang

  Java -> C vs. Single -> Multicore

  |CPUs| ist Maximum

Weitere ähnliche Inhalte

Andere mochten auch

Sandoz gmb h ai schaftenau biochemiestrabe - langkampfen- austria
Sandoz gmb h   ai schaftenau biochemiestrabe - langkampfen- austriaSandoz gmb h   ai schaftenau biochemiestrabe - langkampfen- austria
Sandoz gmb h ai schaftenau biochemiestrabe - langkampfen- austriaLeonard Veras
 
Breitband nach Ministerrat
Breitband nach MinisterratBreitband nach Ministerrat
Breitband nach MinisterratBjörn Rohles
 
Pfarren auf Facebook und im Social Web
Pfarren auf Facebook und im Social WebPfarren auf Facebook und im Social Web
Pfarren auf Facebook und im Social WebKirche 2.0
 
Umfrage unter Energieexperten zur Energiewende: Keine Partei kann es
Umfrage unter Energieexperten zur Energiewende: Keine Partei kann esUmfrage unter Energieexperten zur Energiewende: Keine Partei kann es
Umfrage unter Energieexperten zur Energiewende: Keine Partei kann esAndreas Jung
 
Der TYPO3 File Abstraction Layer
Der TYPO3 File Abstraction LayerDer TYPO3 File Abstraction Layer
Der TYPO3 File Abstraction Layerandreaswo
 
Präsentation wikipedia 14022015_2
Präsentation wikipedia 14022015_2Präsentation wikipedia 14022015_2
Präsentation wikipedia 14022015_2Wolfgang Gross
 
Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)
Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)
Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)Infopaq Deutschland
 
Vom Suchen und Finden der Influencer unter den Bloggern
Vom Suchen und Finden der Influencer unter den BloggernVom Suchen und Finden der Influencer unter den Bloggern
Vom Suchen und Finden der Influencer unter den BloggernADENION GmbH
 

Andere mochten auch (20)

Render
RenderRender
Render
 
Bcv
BcvBcv
Bcv
 
Sandoz gmb h ai schaftenau biochemiestrabe - langkampfen- austria
Sandoz gmb h   ai schaftenau biochemiestrabe - langkampfen- austriaSandoz gmb h   ai schaftenau biochemiestrabe - langkampfen- austria
Sandoz gmb h ai schaftenau biochemiestrabe - langkampfen- austria
 
Breitband nach Ministerrat
Breitband nach MinisterratBreitband nach Ministerrat
Breitband nach Ministerrat
 
AUTOCAD DRAWINGS
AUTOCAD DRAWINGSAUTOCAD DRAWINGS
AUTOCAD DRAWINGS
 
imatics FormEngine
imatics FormEngineimatics FormEngine
imatics FormEngine
 
Pfarren auf Facebook und im Social Web
Pfarren auf Facebook und im Social WebPfarren auf Facebook und im Social Web
Pfarren auf Facebook und im Social Web
 
Umfrage unter Energieexperten zur Energiewende: Keine Partei kann es
Umfrage unter Energieexperten zur Energiewende: Keine Partei kann esUmfrage unter Energieexperten zur Energiewende: Keine Partei kann es
Umfrage unter Energieexperten zur Energiewende: Keine Partei kann es
 
Kirchen und Theologie im Social Web
Kirchen und Theologie im Social WebKirchen und Theologie im Social Web
Kirchen und Theologie im Social Web
 
weil
weilweil
weil
 
Der TYPO3 File Abstraction Layer
Der TYPO3 File Abstraction LayerDer TYPO3 File Abstraction Layer
Der TYPO3 File Abstraction Layer
 
Mobile Webapps Motivation
Mobile Webapps MotivationMobile Webapps Motivation
Mobile Webapps Motivation
 
Vortrag JFMH 2013
Vortrag JFMH 2013Vortrag JFMH 2013
Vortrag JFMH 2013
 
Präsentation wikipedia 14022015_2
Präsentation wikipedia 14022015_2Präsentation wikipedia 14022015_2
Präsentation wikipedia 14022015_2
 
TV2.0 Summit 2014
TV2.0 Summit 2014TV2.0 Summit 2014
TV2.0 Summit 2014
 
Els ànecs
Els ànecsEls ànecs
Els ànecs
 
Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)
Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)
Infopaq Social Media Kurzanalyse - Trainerkarussell beim FC Bayern (26.04.11)
 
SHOOTING SCRIPT
SHOOTING SCRIPTSHOOTING SCRIPT
SHOOTING SCRIPT
 
WoM - Word of Mouth
WoM - Word of MouthWoM - Word of Mouth
WoM - Word of Mouth
 
Vom Suchen und Finden der Influencer unter den Bloggern
Vom Suchen und Finden der Influencer unter den BloggernVom Suchen und Finden der Influencer unter den Bloggern
Vom Suchen und Finden der Influencer unter den Bloggern
 

Ähnlich wie Concurrency in java

Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingTipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingJörn Dinkla
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenTobias Trelle
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tplDavidT27
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnRoman Roelofsen
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLFromDual GmbH
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlageninovex GmbH
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitTorben Brodt
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering hwilming
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDAJörn Dinkla
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSharepointUGDD
 

Ähnlich wie Concurrency in java (20)

Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-ComputingTipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
Tipps & Tricks für den erfolgreichen Einsatz von GPU-Computing
 
MongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwaltenMongoDB - Riesige Datenmengen schemafrei verwalten
MongoDB - Riesige Datenmengen schemafrei verwalten
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tpl
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Webanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickelnWebanwendungen mit Apache HBase entwickeln
Webanwendungen mit Apache HBase entwickeln
 
Java EE 5
Java EE 5Java EE 5
Java EE 5
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering
 
Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Node.js für Webapplikationen
Node.js für WebapplikationenNode.js für Webapplikationen
Node.js für Webapplikationen
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 

Concurrency in java

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n