Как писать прерываемые методы

У меня есть метод, который концептуально выглядит примерно так:

Object f(Object o1) {
    Object o2 = longProcess1(o1);
    Object o3 = longProcess2(o2);
    return longProcess3(o3);
}

Где сами процессы также могут быть составными:

Object longProcess1(Object o1) {
    Object o2 = longSubProcess1(o1);
    return longSubProcess2(o2);
}

И так далее, с разными процессами, потенциально находящимися в разных модулях. Большинство процессов длинные, потому что они вычислительно дороги, не связаны с вводом-выводом.

Пока все хорошо, но теперь я хочуf в целом быть прерываемым.Рекомендуемый способ Java сделать это периодически проверять наличие прерванного флагаThread.interrupted(), Это довольно просто, но может быстро стать громоздким, если мне нужно изменить мои методы на что-то вроде:

Object f(Object o1) {
    Object o2 = longProcess1(o1);
    if (Thread.interrupted()) throw new InterruptedException();
    Object o3 = longProcess2(o2);
    if (Thread.interrupted()) throw new InterruptedException();
    return longProcess3(o3);
}

Object longProcess1(Object o1) {
    Object o2 = longSubProcess1(o1);
    if (Thread.interrupted()) throw new InterruptedException();
    return longSubProcess2(o2);
}

...

Сейчас,Я понимаю рациональное для такой работы - это позволяет мне лучше контролировать, когда будет генерироваться InterruptedException (например), избегая оставления объектов в несовместимых состояниях - ноМне любопытно узнать, есть ли более элегантный способ сделать это *.

* В Java, а не в AspectJ, что, я думаю, очень уместно, но я застрял на Java.

Ответы на вопрос(2)

Ваш ответ на вопрос