2013-08-18 3 views
1

PlayFramework에서 실행중인 작업을 프로그래밍 방식으로 중지하려고합니다. Job이 실행되면, 시작될 때 반환하는 'Promise'객체를 저장합니다. 이 개체에는 예약 된 작업을 취소해야하거나 기존 작업을 중지해야하는 '취소'방법이 있지만 아무 것도하지 않는 것 같습니다.PlayFramework 작업을 프로그래밍 방식으로 중지

다른 방법으로 실행중인 작업을 중지 할 수 있습니까?

답변

1

나는 잘 주문 된 취소를 직접 구현해야한다고 생각합니다. cancel은 바람직하지 않은 결과를 초래할 수 있으므로 스레드의 실행을 종료하지 않습니다. 해결책은 비슷하지만 Thread.stop()은 더 이상 사용되지 않고 Thread.interrupt()을 대신 사용해야합니다.

경우에 따라 작업이 취소되었는지 확인하십시오. 루프에서 무거운 계산을 실행하는 경우 시작 부분에서 계속 실행해야하는지 확인하십시오. 이 방법으로 부분 결과를 반환 할 수도 있습니다.

+0

문제는 PlayFramework의 '작업'자체가 스레드가 아니며 실행중인 스레드 외부에서이를 중단해야한다는 것입니다. 어떤 이유로 든 루프에 걸렸을 때 종료되지 않을 수 있기 때문에 '실행 중인지 확인'유형의 패턴을 구현하고 싶지 않습니다. 인터럽트 예외는 조금 더 성공할 것입니다. – Iv4n

+0

@ Iv4n 어떤 작업과 미래/약속 구현은 정확히 사용하고 있습니까? 자바, 스칼라, play1, play2 및 akka에 대한 꽤 다른 것들이 있습니다. Play 2.x를 사용하는 경우 루프에 걸릴 염려가있는 경우 제한 시간을 사용하여 선물을 실행하는 방법이 있어야합니다. – Kapep

+0

Play 1.x - Java 만 사용하고 있습니다. – Iv4n