如何让以下方法返回character array
?
public char[] startThread() {
// arr declaration
Runnable r = new Runnable() {
@Override
public void run() {
arr = getArray(); // arr assignment
}
};
new Thread(r).start();
return arr;
}
char arrNew[] = startThread();
注意:上面的代码段会生成错误
答案 0 :(得分:3)
查找java.util.concurrent.Callable,它类似于runnable但返回一个值。
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Callable.html
或
如果在1.6 JDK中,您可以查找Future对象。
答案 1 :(得分:0)
你做不到。
从方法返回时,您没有char数组。它尚未创建。因此,将指定为参考将不起作用。 Callable
都不会对此有所帮助。
您可以做的是创建一个holder对象,并返回它(这与Future
个对象非常相似):
public static class ArrayHolder {
public char[] arr;
}
public ArrayHolder startThread() {
final ArrayHolder holder = new ArrayHolder();
Runnable r = new Runnable() {
@Override
public void run() {
holder.arr = getArray(); // arr assignment
}
};
new Thread(r).start();
return holder;
}
ArrayHolder h = startThread();
char arrNew[] = h.arr;
请注意,h.arr
会及时更改,因此您第一次调用它时很可能会返回null