False sharing is a situation that can cause performance degradations when two or more threads write to different variables located within the same CPU cache line.
In this short tutorial I correct my statements about how Java synchronized and volatile variables effect how thread visible variables are flushed to main RAM.
Compare and swap functionality is an alternative to synchronized blocks in Java when designing high throughput, non-blocking concurrent algorithms in Java.
The peer findability and message routability challenges of P2P networks are typically addressed in similar ways. This tutorial covers common solutions to peer findability and message routability in peer-to-peer networks.
Peers in a peer-to-peer network need to be able to address each other uniquely. That it was peer addressability refers to. This tutorial explains how common P2P algorithms approaches peer addressability.
Peers in a peer-to-peer network need to be able to connect to each other in order to communicate with each other. I explain common solutions to overcoming NAT and firewall problems in this peer connectivity tutorial.
A lot has happened in the world of Peer-to-Peer (P2P) networks since I wrote the first version of this tutorial - so I have started updating it. First step was updating the introduction.
Single-threaded concurrency designs are an alternative to multithreaded concurrency designs which achieves many of the same benefits (task switching) without many of the multithreading problems (thread update visibility, race conditions etc.etc.).
The Producer Consumer Pattern is a work load distribution pattern where the number of worker threads are decoupled from the number of tasks to execute.