AsyncTaskでtimeoutを指定する方法

AsyncTaskを利用してAPIへリクエストする際にTimeOutを指定したい場合がある。そのやり方のメモ。

final SampleTask task = new SampleTask();
task.execute();

// TimeOut処理
new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            // TimeOutに10秒を指定
            // 10秒以内にTaskが終了しなければTimeoutExceptionを投げる
            task.get(10000, TimeUnit.MILLISECONDS);
        } catch (Exception e) {
            // Exceptionをキャッチしtaskをキャンセルする
            task.cancel(true);
            e.printStackTrace();
        }
    }
}).start();