Initial attempt. Deadlock.
Refinement. Still deadlocks.
D'oh! Classic deadlock caused by double locking.
Single locking synchronization. Still deadlocks.
"Solved" by making acquisition of both chopsticks an atomic operation.

Which might be out of spec.