Я учился в Java почти никогда , ожидают неограниченно долго, чтобы блокировка разблокировала, если я действительно не ожидаю, что это может неограниченно долго занять много времени. Если реалистично, блокировка должна разблокировать в течение секунд, то я буду ожидать только в течение определенного отрезка времени. Если блокировка не разблокировала, то я жалуюсь и вывожу стек к журналам, и в зависимости от того, что является лучшим для устойчивости системы, или продвинуться, как будто блокировка, разблокированная, или, продолжаются, как будто блокировка никогда не разблокировала.
Это помогло изолировать несколько условий состязания и условий псевдомертвой блокировки, которые были таинственными, прежде чем я начал делать это.
Я хожу в Wolfram Mathworld, когда у меня возникают подобные вопросы. Для этой проблемы попробуйте эту страницу: Пересечение плоскости и плоскости
Уравнение 8 на этой странице дает пересечение трех плоскостей. Чтобы использовать его, вам сначала нужно найти единичные нормали для плоскостей. Это просто: учитывая три точки a , b и c на плоскости (это то, что у вас есть, верно?), Возьмите перекрестное произведение из ( a - b ) и ( a - c ), чтобы получить нормальный, затем разделите его на его собственную величину, чтобы получить единица нормальная.