Java 如何使此方法返回数组?
如何使以下方法返回Java 如何使此方法返回数组?,java,arrays,multithreading,Java,Arrays,Multithreading,如何使以下方法返回字符数组 public char[] startThread() { // arr declaration Runnable r = new Runnable() { @Override public void run() { arr = getArray(); // arr assignment } }; new Thread(r).start(); return
字符数组
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();
注意:上面的代码段生成一个错误您不能这样做
从方法返回时,没有char数组。它还没有创建。因此,指定为引用将不起作用。无论是Callable
,都不会对此有所帮助
您可以做的是创建一个holder对象,并返回该对象(这与Future
对象非常相似):
请注意,h.arr
将随时间而变化,因此第一次调用它时,它很可能返回null
,您不能这样做
从方法返回时,没有char数组。它还没有创建。因此,指定为引用将不起作用。无论是Callable
,都不会对此有所帮助
您可以做的是创建一个holder对象,并返回该对象(这与Future
对象非常相似):
请注意,
h.arr
将随时间变化,因此第一次调用它时,它很可能返回null查找java.util.concurrent.Callable,它类似于runnable,但返回一个值
或
如果在1.6 JDK中,您可以查找未来的对象。查找java.util.concurrent.Callable,它类似于runnable,但返回一个值
或
如果在1.6 JDK中,您可以查找未来的对象。我无法指定最终变量。您看到函数调用了吗?您可能无法从Runnable内部为arr分配新值,因此此示例不起作用。@如果您是对的,我尝试了它,重建了示例。我无法分配给最终变量。您看到函数调用了吗?您可能无法从Runnable内部为arr分配新值,因此此示例不起作用。@Gyrogarless您是对的,我尝试了它,重建了我的示例。
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;