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();
    		
    		FutureTask task = 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();
    		
    		FutureTask task = 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 데이터 복사


    다음 포스트가 궁금하시다면 

    ↓ 아래 링크를 클릭해주세요. ↓


    '공감'버튼 및 '좋아요'는 글쓴이에게 큰 힘이 됩니다!

    (클릭)블로그 구독도 부탁드립니다.(네이버이웃 추가)


    Posted by 천상나타