Concurrency


Java Concurrency in Practice
The Art of Multiprocessor Programming
Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)
Concurrency in Go: Tools and Techniques for Developers
The Little Book of Semaphores: The Ins and Outs of Concurrency Control and Common Mistakes
C++ Concurrency in Action: Practical Multithreading
Concurrent Programming in Java : Design Principles and Pattern, 2nd Edition
Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming
Programming Concurrency on the JVM: Mastering Synchronization, STM, and Actors
Programming with POSIX Threads
Concurrency in C# Cookbook: Asynchronous, Parallel, and Multithreaded Programming
Principles of Concurrent and Distributed Programming (Prentice-hall International Series in Computer Science)
Erlang Programming: A Concurrent Approach to Software Development
Concurrency with Modern C++
Learn Concurrent Programming with Go
Metaprogramming Elixir by Chris McCordProgramming Elixir by Dave         ThomasTake off with Elixir by Rob ConeryElixir in Action by Saša JurićProgramming Elixir 1.3 by Dave         Thomas
Learning Elixir
12 books — 6 voters

Distributed Systems by Andrew S. TanenbaumPatterns of Distributed Systems (Addison-Wesley Signature Series by Unmesh joshiDistributed Systems by George CoulourisDistributed Systems For Fun and Profit by Mikito TakadaDistributed Algorithms by Nancy A. Lynch
Distributed Computing
11 books — 2 voters

Debugging tip: For server applications, be sure to always specify the -server JVM command line switch when invoking the JVM, even for development and testing. The server JVM performs more optimization than the client JVM, such as hoisting variables out of a loop that are not modified in the loop; code that might appear to work in the development environment (client JVM) can break in the deployment environment (server JVM).
Brian Goetz, Java Concurrency in Practice

Sometimes abstraction and encapsulation are at odds with performance — although not nearly as often as many developers believe — but it is always a good practice first to make your code right, and then make it fast.
Brian Goetz, Java Concurrency in Practice

More quotes...