程序運行超時處理——JAVA

JAVA中Future類的方法包括get()和cancel()。get()獲取數據對象,如果數據沒有加載,就會阻塞直到取到數據,而 cancel()是取消數據加載。另外一個get(timeout)操作,表示如果在timeout時間內沒有取到就失敗返回,而不再塞。


代碼實現:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class Test1 {

	public void test() {
		final ExecutorService exec = (ExecutorService) Executors.newFixedThreadPool(1);

		Callable call = new Callable() {
			// 放入耗時操作代碼塊
			public Object call() throws Exception {
				Thread.sleep(1001);
				return "執行完成";
			}
		};

		try {
			Future future = exec.submit(call);
			// 任務處理超時時間設置
			String obj = (String) future.get(1000 * 1, TimeUnit.MILLISECONDS); 
			System.out.println("任務成功返回:" + obj);
		} catch (TimeoutException ex) {
			System.out.println("處理超時啦....");
			System.exit(0);
		} catch (Exception e) {
			System.out.println("處理失敗.");
			e.printStackTrace();
		}
		// 關閉線程池
		exec.shutdown();
	}

	public static void main(String[] args) {
		new Test1().test();
	}

}


運行結果:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章