AgileWiki > JActor2 documentation & downloads

Project JActor2: Documentation & Downloads

Why JActor2?

More and more, programs are mandated to use multiple threads. But there are issues...

  • High latency when passing data between threads.
  • Race conditions are difficult to identify.
  • Deadlocks can occur, unless you use something like CycleDetectingLockFactory.

Of course, there are alternatives to threads and locks. A popular alternative being actors. But there are still issues:

  • Actors employ asynchronous messaging, so there is no assurance that a response will be returned for a request. and timeouts tend to create additional load when the failure is due to high load. So the resulting code tends to be complex.
  • Datalocks can still occur, and there is no equivalent to CycleDetectingLockFactory for actors.
  • Passing messages still comes with high latency, so small actors are discouraged.

JActor2 addresses all these issues, making it easy to write robust, high-performance software that scales vertically.

  • A Blade in JActor2 is a kind of actor, and processes one message at a time. So there are no race conditions.
  • Threads usually follow messages to maximize the use of thread cache. So most of the time messages are NOT passed between threads. So the use of small Blades is encouraged.
  • JActors's IsolationReactors enforce a partial ordering when message passing, making it easy to detect potential deadlocks during testing.
  • The processing of a message, exclusive of the requests sent by that message, is expected to be done in a given amount of time as specified by the message itself. This is one assurance that there will be a response to any given request.
  • But because we distinguish requests from responses, and track which requests are still outstanding when processing a message, if message processing completes without sending a response and there are no outstanding requests, then it can generally be assumed that there is an error.

laforge49/JActor2     The Apache Software License, Version 2.0

Releases

02/25/2015 version 1.0.0: Cleanup

Milestone: 1.0.0 Issues: 140, 221-223, 240-243

Jar files: jactor2-core, jactor2-coreMt and jactor2-metrics

Source Jar files: jactor2-core, jactor2-coreMt and jactor2-metrics

Documents

Dependencies

  • jactor2-core: -none-
  • jactor2-coreMt: jactor2-core, slf4j, guava
  • jactor2-metrics: jactor2-coreMt, metrics

Older Releases


AgileWiki > JActor2 documentation & downloads