その部分はただの代入文だしょ
aのフィールドbにローカル変数bの値を代入。
bのフィールドaにローカル変数aの値を代入。
こう書き換えたほうがわかりやすい?

A a1 = new A();
B b1 = new B();

a1.b = b1;
b1.a = a1;


a1とb1が互いに参照しあっていて
2つのスレッドがそれぞれをロックしたまま
もう一方にアクセスしようとしてるから、
デッドロックが起こる、と。