0

我今天出现了面试。面试官让我用java 1.5写一个线程。你可以扩展java.lang.thread类或者实现java.lang.Runnable接口。实现的 run() 方法是否有可能具有除 void 之外的返回类型。Runnable 接口中的方法签名是

public void run();

我的回答是“由于上述签名定义,您不能从 run() 方法返回 int 或字符串。”

面试官说在java 1.5中你可以从run方法返回int或string。

大家能告诉我怎么做吗?

我在下面试过它给出了编译错误:

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");
    }
}

我搜索了谷歌也找不到任何这样的方式。有没有可能?

4

4 回答 4

5

这是不可能的; 要么你误解了面试官,要么他们错了。(您可能只是“将返回值写入某个共享变量”,但这似乎不符合要求。)

但是,该Callable接口允许您返回一个值。

于 2012-06-10T16:20:21.820 回答
1

我认为面试官指的是CallableJava 1.5 中引入的接口:

https://blogs.oracle.com/CoreJavaTechTips/entry/get_netbeans_6

这意味着他的问题不准确,因为他在谈论 Runnable。

于 2012-06-10T16:22:29.127 回答
0

请看这个Runnable

run 方法只有 void 返回类型,这是从 1.4.2 规范开始的。

所以,你的答案是正确的,可能是你的面试官试图扭曲你。

于 2012-06-10T16:22:54.727 回答
0

不可能,你是对的......

run() method will never return anything.

那是线程的问题,

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

尽管 java 7 已经在它的

java.util.Concurrent package
于 2012-06-10T16:24:24.783 回答