Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
Upcoming SlideShare
Loading in …5
×

of

State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 1 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 2 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 3 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 4 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 5 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 6 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 7 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 8 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 9 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 10 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 11 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 12 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 13 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 14 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 15 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 16 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 17 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 18 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 19 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 20 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 21 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 22 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 23 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 24 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 25 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 26 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 27 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 28 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 29 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 30 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 31 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 32 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 33 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 34 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 35 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 36 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 37 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 38 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 39 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 40 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 41 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 42 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 43 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 44 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 45 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 46 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 47 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 48 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 49 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 50 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 51 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 52 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 53 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 54 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 55 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 56 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 57 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 58 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 59 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 60 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 61 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 62 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 63 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 64 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 65 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 66 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 67 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 68 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 69 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 70 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 71 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 72 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 73 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 74 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 75 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 76 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 77 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 78 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 79 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 80 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 81 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 82 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 83 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 84 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 85 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 86 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 87 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 88 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 89 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 90 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 91 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 92 State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM Slide 93
Upcoming SlideShare
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Next
Download to read offline and view in fullscreen.

109 Likes

Share

Download to read offline

State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM

Download to read offline

My talk for JavaOne 2009

Abstract:
Writing concurrent programs in the Java programming language is hard, and writing correct concurrent programs is even harder. What should be noted is that the main problem is not concurrency itself but the use of mutable shared state. Reasoning about concurrent updates to, and guarding of, mutable shared state is extremely difficult. It imposes problems such as dealing with race conditions, deadlocks, live locks, thread starvation, and the like.

It might come as a surprise to some people, but there are alternatives to so-called shared-state concurrency (which has been adopted by C, C++, and the Java programming language and become the default industry-standard way of dealing with concurrency problems).

This session discusses the importance of immutability and explores alternative paradigms such as dataflow concurrency, message-passing concurrency, and software transactional memory. It includes a pragmatic discussion of the drawbacks and benefits of each paradigm and, through hands-on examples, shows you how each one, in its own way, can raise the abstraction level and give you a model that is much easier to reason about and use. The presentation also shows you how, by choosing the right abstractions and technologies, you can make hard concurrency problems close to trivial. All discussions are driven by examples using state-of-the-art implementations available for the JVM machine.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • ggchaitanya

    Sep. 17, 2018
  • Jasonmao5

    Feb. 27, 2018
  • ShengRan1

    Dec. 4, 2017
  • bowan7

    Mar. 8, 2017
  • prayagupd

    Mar. 17, 2016
  • wangxing

    Mar. 16, 2016
  • Levpri

    Feb. 6, 2016
  • GabrielGiussi

    Jan. 5, 2016
  • partha_net123

    Sep. 19, 2015
  • ViktorLobanov1

    Sep. 7, 2015
  • HilaryBlanco

    Jun. 11, 2015
  • ChiehYu2

    May. 26, 2015
  • ForatLatif

    Jan. 19, 2015
  • javaday

    Jan. 14, 2015
  • brucesea

    Dec. 3, 2014
  • rajurameshm

    Nov. 15, 2014
  • arisgoulia

    Nov. 11, 2014
  • oliverzy

    May. 21, 2014
  • oleole

    Jan. 31, 2014
  • 1esha

    Jan. 28, 2014

My talk for JavaOne 2009 Abstract: Writing concurrent programs in the Java programming language is hard, and writing correct concurrent programs is even harder. What should be noted is that the main problem is not concurrency itself but the use of mutable shared state. Reasoning about concurrent updates to, and guarding of, mutable shared state is extremely difficult. It imposes problems such as dealing with race conditions, deadlocks, live locks, thread starvation, and the like. It might come as a surprise to some people, but there are alternatives to so-called shared-state concurrency (which has been adopted by C, C++, and the Java programming language and become the default industry-standard way of dealing with concurrency problems). This session discusses the importance of immutability and explores alternative paradigms such as dataflow concurrency, message-passing concurrency, and software transactional memory. It includes a pragmatic discussion of the drawbacks and benefits of each paradigm and, through hands-on examples, shows you how each one, in its own way, can raise the abstraction level and give you a model that is much easier to reason about and use. The presentation also shows you how, by choosing the right abstractions and technologies, you can make hard concurrency problems close to trivial. All discussions are driven by examples using state-of-the-art implementations available for the JVM machine.

Views

Total views

28,883

On Slideshare

0

From embeds

0

Number of embeds

2,773

Actions

Downloads

924

Shares

0

Comments

0

Likes

109

×