That article is certainly comprehensive, but not a quick read.
To me, "deadlock" in
Java normally means deadlock of
thread synchronisation. This typically happens when more than one lock is involved in some operations and different threads lock the locks in different orders. The solution to this problem is to impose a synchronisation strategy on your code, so that locks are always acquired in the same order.
That is, however, only one type of deadlock and one way of preventing it. Don't let me stop you reading up on all the others!