[자바] java method timeout - 메서드 타임 아웃 걸기
IT/JAVA
2018. 4. 17. 18:15
728x90
1. 실험을 위하여 java main 테스트를 만듭니다.
public static void main(String[] args) { boolean test = call(50); if(test){ System.out.println("test Success"); }else{ System.out.println("test Fail"); } }
2. 자바 메소드 타임아웃(시간설정)을 실험할 call을 정의합니다.
- 저는 비교적 간단하게 사용하기위하여 true/false로 기능 테스트를 해보겠습니다.
public static boolean call(long time){ ExecutorService threadPool = Executors.newCachedThreadPool(); FutureTasktask = new FutureTask ( new Callable () { public Boolean call() throws Exception { Thread.sleep(30); return true; } }); threadPool.execute(task); Boolean result = false; try { try { result = task.get(time, TimeUnit.MILLISECONDS); } catch (TimeoutException e) { result = false; } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return result; }
3. 결과는 Success가 찍혔습니다.
test Success
그렇다면 이 기능이 실제적으로
실제 timeout을 넘어가면 false가 찍히는지 확인해보겠습니다.
4. main은 그대로 time을 50ms로 설정하겠습니다.
public static Boolean call(long time){ ExecutorService threadPool = Executors.newCachedThreadPool(); FutureTasktask = new FutureTask ( new Callable () { public Boolean call() throws Exception { Thread.sleep(60);// sleep를 60ms로 변경 return true; } }); threadPool.execute(task); Boolean result = false; try { try { result = task.get(time, TimeUnit.MILLISECONDS); } catch (TimeoutException e) { result = false; } } catch (InterruptedException e) { result = false; } catch (ExecutionException e) { result = false; } return result; }
5. 결과는 Timeout으로 인해 false를 리턴하네요.
test Fail
지난 포스트가 궁금하시다면
↓↓↓ 아래 링크를 클릭해주세요. ↓↓↓↓
[자바] 깊은 복사와 얕은 복사의 이해 - java 데이터 복사
다음 포스트가 궁금하시다면
↓↓↓ 아래 링크를 클릭해주세요. ↓↓↓↓
'공감'버튼 및 '좋아요'는 글쓴이에게 큰 힘이 됩니다!
'IT > JAVA' 카테고리의 다른 글
자바 리스트(ArrayList)와 배열(Array)의 차이점 3가지 (0) | 2018.06.05 |
---|---|
자바 Map<String,String>을 다른 Map 키값으로 사용한다면 (0) | 2018.05.30 |
[자바] 깊은 복사와 얕은 복사의 이해 - java 데이터 복사 (1) | 2018.04.17 |
[자바 패턴] 싱글톤패턴의 이해(java singleton) (0) | 2018.04.17 |
[JAVA] 자바로 csv파일 만들기(라이브러리 X) (3) | 2018.01.26 |