我有一個調用外部應用程序的Restful Service。此應用程序正在使我的服務掛起。因此,當用戶撥打我的服務時,由於此外部應用程序可能需要一個小時。外部應用程序只需要幾秒鐘執行。否則,出現了問題。所以我想讓我的服務中的代碼執行長達30秒。如果它通過了30秒的標記,我想停止服務並重新啓動它。在30秒內停止線程並重試
這裏就是我想:
public static void main(String[] args){
Thread thread = new Thread(){
public void run(){
System.out.println("Hello Thread");
}
};
thread.start();
//if thread is alive in 30 seconds, stop and retry
}
我不想要執行的代碼每30秒。我希望能夠停止代碼執行並從頭開始重新啓動它。
這裏的服務:
@Path("/test")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response test(@QueryParam("input") String input) {
//call external application... if it hangs, it will take more than 30 seconds...
}
我已經研究過這個嘗試,但沒有運氣。你能舉個例子說明你的意思嗎? –
@ChrisBolton http://www.mkyong.com/java/jdk-timer-scheduler-example/就是一個很好的例子。計時器創建自己的線程,因此您不需要。 – ajpaparo
http://stackoverflow.com/questions/10029831/how-do-you-use-a-timertask-to-run-a-thread另一個很好的例子給你。 – ajpaparo