2012-06-10 2 views
0

오늘 인터뷰에 출연했습니다. 면접관은 Java 1.5 에 스레드를 작성하라고 요청했습니다. java.lang.thread 클래스를 확장하거나 java.lang.Runnable 인터페이스를 구현할 수 있습니다. 구현 된 run() 메서드가 void가 아닌 반환 유형을 가질 수 있습니다. 의 Runnable 인터페이스의 메소드 서명은 내 대답했다java 1.5 : java.lang.Runnable 인터페이스의 run() 메소드가 void가 아닌 리턴 유형을 가질 수 있습니까?

public void run(); 

는 "당신 때문에 위의 서명 정의의 run() 메소드에서의 int 또는 문자열을 반환 할 수 없습니다."

면접 원은 java 1.5에서 int 또는 run 메소드에서 문자열을 반환 할 수 있다고 말했다.

모두 어떻게 할 수 있습니까? 나는 그러한 방법을 찾을 수 없습니다 또한 구글을 검색 한

public class SampleInterview implements Runnable { 
    @Override 
    public int run() { 
     System.out.println("Start : inside run of SampleInterview"); 
     System.out.println("End : inside run of SampleInterview"); 
    } 
} 

:

나는 그것을 컴파일 오류를 준 아래했습니다. 그것은 가능하거나 불가능합니까?

답변

5

불가능합니다. 당신이 인터뷰를 오해했거나 틀 렸습니다. (당신은 는 "일부 공유 변수에 반환 값을 쓰기"할 수 있지만,이 요구 사항을 충족처럼 그것은 보이지 않는다.)

Callable 인터페이스는하지만, 당신은 값을 반환 할 수 있습니다.

+0

내가 너무 공유 객체를 사용하도록 제안은 이러한 문제를 처리했지만, 그는 우리가 돌아 스레드 싶어했다 . – HakunaMatata

0

run 메소드는 무효 반환 형식이이 Runnable

을보고 그 1.4.2 사양부터입니다하시기 바랍니다.

귀하의 답변이 정확합니다. 귀하의 면접자가 귀하를 왜곡하려고 시도하고있는 것일 수 있습니다.

0

그것의 불가능, 당신은 ..................

run() method will never return anything 옳았다. 스레드의 문제였다

,

cannot have a return type, and cant throw an exception. 

는 비록 자바 7

java.util.Concurrent package 
관련 문제