Oracleでデッドロックを起こす

1.(セッションA) 子レコードを更新。


update child set foo='bar' where id='C01';

2.(セッションB) 親レコードを削除。(セッションBはWAIT)


delete from parent where id='P01';

3.(セッションA) 子レコードのFKが貼られたカラムを更新。
(デッドロック発生。いずれかのセッションでORA-00060)


update child set fk_column='anyvalue' where id='C01';

追記
SQL*Plusだとデッドロックが起きるけど、Javaプログラムだとデッドロックは起きない(2.で参照整合性エラー)。なぜ?

追記2
2つのスレッドで同じコネクションを使っていたせいだった…orz