我有以下代码,但是当我在新的 Thread 类之外声明 String 行时,我得到了一个异常。我来自 C# 背景,所以我现在明白 Java 不支持真正的闭包。所以我的问题是:
如何在新线程之外声明一个字符串并在新线程中使用它?
无法引用以不同方法定义的内部类中的非最终变量行
ProcessBuilder builder =
new ProcessBuilder("/Users/Joe/Desktop/file", "-i", src);
builder.redirectErrorStream(true);
Process process = builder.start();
final InputStream is = process.getInputStream();
String line;
new Thread(new Runnable() {
@Override public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while ((br.readLine()) != null) {
line += br.readLine() + "\n";
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();