# Disruptor

Published articles for Disruptor.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Speaking at Tech Mesh

DevFeed: [Speaking at Tech Mesh](<https://devfeed.tech/articles/speaking-at-tech-mesh-30648.md>)

Original publisher: [Read original article](<http://bad-concurrency.blogspot.com/2012/11/speaking-at-tech-mesh.html>)

Author: Michael Barker (noreply@blogger.com)

Published: 2012-11-07T23:15:00Z

Content type: opinion

Language: en

Sources: [Bad Concurrency](<https://devfeed.tech/sources/bad-concurrency.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [announce](<https://devfeed.tech/tags/announce.md>), [challenges](<https://devfeed.tech/tags/challenges.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [disruptor](<https://devfeed.tech/tags/disruptor.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [high-performance](<https://devfeed.tech/tags/high-performance.md>), [history](<https://devfeed.tech/tags/history.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [performance](<https://devfeed.tech/tags/performance.md>), [perspectives](<https://devfeed.tech/tags/perspectives.md>), [speaking](<https://devfeed.tech/tags/speaking.md>), [systems](<https://devfeed.tech/tags/systems.md>), [tech](<https://devfeed.tech/tags/tech.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

The author announces an upcoming Tech Mesh talk about the Disruptor, covering its history and motivations, the challenges of building high-performance concurrent systems, and how JVM and hardware changes could support them.

### Source excerpt

I'm happy to announce that I will speaking at Tech Mesh in December. I'll be speaking about the Disruptor from two perspectives, firstly looking briefly back at some of the history and motivations behind the Disruptor. Then spending some time explaining at the challenges of building high performance concurrent systems (like the Disruptor) and delving into how the JVM and hardware could change to support the development of these systems.

## Slides From Recent Presentations

DevFeed: [Slides From Recent Presentations](<https://devfeed.tech/articles/slides-from-recent-presentations-30641.md>)

Original publisher: [Read original article](<http://bad-concurrency.blogspot.com/2012/02/slides-from-recent-presentations.html>)

Author: Michael Barker (noreply@blogger.com)

Published: 2012-02-10T06:39:00Z

Content type: article

Language: en

Sources: [Bad Concurrency](<https://devfeed.tech/sources/bad-concurrency.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [beginners](<https://devfeed.tech/tags/beginners.md>), [disruptor](<https://devfeed.tech/tags/disruptor.md>), [guide](<https://devfeed.tech/tags/guide.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

The article shares presentation slides and videos from JAX London and Devoxx. The presentations cover hardcore concurrency for beginners and the Disruptor tool in action.

### Source excerpt

My slides from JAX London - Beginner's Guide to Hardcore Concurrency: Beginners guide-concurrency View more presentations from Michael Barker Video: LJC@Playfish, JAX London My slides from Devoxx - Disruptor Tools In Action: Disruptor tools in action View more presentations from Michael Barker Video: Devoxx (Payment required)

## Blog Rename and Video Links

DevFeed: [Blog Rename and Video Links](<https://devfeed.tech/articles/blog-rename-and-video-links-30638.md>)

Original publisher: [Read original article](<http://bad-concurrency.blogspot.com/2011/12/blog-rename-and-video-links.html>)

Author: Michael Barker (noreply@blogger.com)

Published: 2011-12-23T07:15:00Z

Content type: opinion

Language: en

Sources: [Bad Concurrency](<https://devfeed.tech/sources/bad-concurrency.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [coding](<https://devfeed.tech/topics/coding.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [disruptor](<https://devfeed.tech/tags/disruptor.md>), [links](<https://devfeed.tech/tags/links.md>)

### AI overview

The author announces a blog rename and says future posts will focus primarily on concurrency. The article also shares links to conference videos about concurrency and the Disruptor, including a live-coding experiment that did not work well.

### Source excerpt

I've decided to rename my blog. I plan to focus my blog efforts more on concurrency than any other particular subject and I thought it would be fun to pay homage to the bad science blog by Ben Goldacre. It will probably kill my traffic for a while, until I get the few blog aggregators that carry my blog to update their feeds. So welcome to my rebranded blog, I'll start posting again in the next few weeks. In the mean time here are some links to videos from the various conferences that I spoke at over the past month or 2. LJC @Playfish - Beginner's Guide to Concurrency (the trial run) JAX London - Beginner's Guide to Concurrency Devoxx - A tools in action session on the Disruptor (this was a experiment that didn't work very well, an attempt at live coding)

## Adventures with AtomicLong

DevFeed: [Adventures with AtomicLong](<https://devfeed.tech/articles/adventures-with-atomiclong-13615.md>)

Original publisher: [Read original article](<https://mechanical-sympathy.blogspot.com/2011/09/adventures-with-atomiclong.html>)

Author: Martin Thompson (noreply@blogger.com)

Published: 2011-09-11T11:46:00Z

Content type: article

Language: en

Sources: [Mechanical Sympathy](<https://devfeed.tech/sources/mechanical-sympathy.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Java](<https://devfeed.tech/topics/java.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [intel](<https://devfeed.tech/topics/intel.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [atomic](<https://devfeed.tech/tags/atomic.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [cas](<https://devfeed.tech/tags/cas.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [disruptor](<https://devfeed.tech/tags/disruptor.md>), [intel](<https://devfeed.tech/tags/intel.md>), [java](<https://devfeed.tech/tags/java.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article examines AtomicLong-based event sequencing in Java's Disruptor and reports unexpectedly worse performance after removing megamorphic method calls. The investigation attributes the result to increased contention exposing a performance issue with atomic instructions on Intel Sandy Bridge processors, also observed in ArrayBlockingQueue.

### Source excerpt

Sequencing events between threads is a common operation for many multi-threaded algorithms. These sequences could be used for assigning identity to orders, trades, transactions, messages, events, etc. Within the Disruptor we use a monotonic sequence for all events which is implemented as AtomicLong incrementAndGet for the multi-threaded publishing scenario. While working on the latest version of the Disruptor I made some changes which I was convinced would improve performance, however the results surprised me. I had removed some potentially megamorphic method calls and the performance got worse rather than better. After a lot of investigation, I discovered that the megamorphic method calls were hiding a performance issue with the latest Intel Sandybridge processors. With the megamorphic calls out of the way, the contention on the atomic sequence generation increased exposing the issue. I've also observed this performance issue with other Java concurrent structures such as ArrayBlockingQueue. I've been running various benchmarks on Sandybridge and have so far been impressed with performance improvements over Nehalem, especially for memory intensive applications due to the changes in its front-end. However with this sequencing benchmark, I discovered that Sandybridge has taken a major step backward in performance with regard to atomic instructions. Atomic instructions enable read-modify-write actions to be combined into an atomic operation. A good example is incrementing a counter. To complete the increment operation a thread must read the current value, increment it, and then write back the results. In a multi-threaded environment these distinct operations could interleave with other threads doing the same with corrupt results as a consequence. The normal way to avoid this interleaving is to take out a lock for mutual exclusion while performing the steps. Locks are very expensive and often require kernel arbitration between threads. Modern CPUs provide a number of at

## Upcoming software development and performance talks at JAX London, Devoxx, and Stack Overflow Dev Days

DevFeed: [Upcoming software development and performance talks at JAX London, Devoxx, and Stack Overflow Dev Days](<https://devfeed.tech/articles/upcoming-speaking-events-30637.md>)

Original publisher: [Read original article](<http://bad-concurrency.blogspot.com/2011/09/upcoming-speaking-events.html>)

Author: Michael Barker (noreply@blogger.com)

Published: 2011-09-03T11:10:00Z

Content type: news

Language: en

Sources: [Bad Concurrency](<https://devfeed.tech/sources/bad-concurrency.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Tool](<https://devfeed.tech/topics/tool.md>), [Stack Overflow](<https://devfeed.tech/topics/stackoverflow.md>)

Tags: [dev](<https://devfeed.tech/tags/dev.md>), [disruptor](<https://devfeed.tech/tags/disruptor.md>), [events](<https://devfeed.tech/tags/events.md>), [london](<https://devfeed.tech/tags/london.md>), [performance](<https://devfeed.tech/tags/performance.md>), [speaking](<https://devfeed.tech/tags/speaking.md>), [stackoverflow](<https://devfeed.tech/tags/stackoverflow.md>), [talk](<https://devfeed.tech/tags/talk.md>), [technology](<https://devfeed.tech/tags/technology.md>), [tools](<https://devfeed.tech/tags/tools.md>)

### AI overview

The author announces upcoming speaking events covering the disruptor, development tools, technology, and performance folklore at JAX London, Devoxx, and Stack Overflow Dev Days in November 2011.

### Source excerpt

I've had a few speaking events confirmed for the end of this year: Trisha Gee and I are speaking at JAX London on November 2nd. I'm presenting the disruptor in a half hour "Tools in Action" slot at Devoxx 2011 on November 14th. I'm speaking on Technology and Performance Folklore at StackOverflow Dev Days on November 15th. Trisha and I are hoping to preview our talk to the LJC sometime in October.

## Disruptor 2.0 Released

DevFeed: [Disruptor 2.0 Released](<https://devfeed.tech/articles/disruptor-2-0-released-13612.md>)

Original publisher: [Read original article](<https://mechanical-sympathy.blogspot.com/2011/08/disruptor-20-released.html>)

Author: Martin Thompson (noreply@blogger.com)

Published: 2011-08-27T08:49:00Z

Content type: release

Language: en

Sources: [Mechanical Sympathy](<https://devfeed.tech/sources/mechanical-sympathy.md>)

Topics: [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Java](<https://devfeed.tech/topics/java.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [concurrent](<https://devfeed.tech/tags/concurrent.md>), [concurrent-programming](<https://devfeed.tech/tags/concurrent-programming.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [disruptor](<https://devfeed.tech/tags/disruptor.md>), [framework](<https://devfeed.tech/tags/framework.md>), [graph](<https://devfeed.tech/tags/graph.md>), [java](<https://devfeed.tech/tags/java.md>), [performance](<https://devfeed.tech/tags/performance.md>), [queue](<https://devfeed.tech/tags/queue.md>), [release](<https://devfeed.tech/tags/release.md>)

### AI overview

This release article announces Disruptor 2.0, highlighting a cleaner API, renamed event-processing concepts, a DSL for assembling EventProcessor dependency graphs, and substantial performance improvements over queue-based approaches.

### Source excerpt

Significantly improved performance and a cleaner API are the key takeaways for the Disruptor 2.0 concurrent programming framework for Java. This release is the result of all the great feedback we have received from the community. Feedback is very welcome and really improves the end product so please keep it coming. You can find the Disruptor project here, plus we have a wiki with links to detailed blogs describing how things work. Naming & API Over the lifetime of the Disruptor naming has been a challenge. The funny thing is that with the 2.0 release we have come almost full circle. Originally we considered the Disruptor as an event processing framework that often got used as a queue replacement. To make it understandable to queue users we adopted the nomenclature of producers and consumers. However the consumers are not true consumers. With this release the consensus is to return to the event processing roots and adopt the following naming changes. Producer -> Publisher Events are claimed in strict sequence and published to the RingBuffer. Entry -> Event Events represent the currency of data exchange through the dependency graph of EventProcessors. Consumer -> EventProcessor Events are processed by EventProcessors. The processing of an event can be read only, but can also involve mutations on which other EventProcessors depend. ConsumerBarrier -> DependencyBarrier Complex graphs of dependent EventProcessors can be constructed for the processing of an Event. The DependencyBarriers are assembled to represent the dependency graph. This topic is the real value of the Disruptor and often misunderstood. A fun example can be seen playing FizzBuzz in our performance tests. The ProducerBarrier was always a one-to-one relationship with the RingBuffer so for ease of use its behaviour has been merged into the RingBuffer. This allows direct publishing into the RingBuffer. DSL Wizard The most complex part of using the Disruptor is the setting up of the dependency graph of EventP