我想调用一个返回字符串值的方法.实际上这个字符串值是一个实例变量,而run方法则放入字符串的值.
所以,我想调用一个方法来获取线程run()方法更新的字符串值.
我是怎么做的?
Plz任何人帮助我..
Saravanan
查看Callable,它是一个可以返回结果的Runnable.
你这样使用它:
你编写一个Callable而不是Runnable,例如:
public class MyCallable implements Callable<Integer> {
public Integer call () {
// do something that takes really long...
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过将其提交给ExecutionService来解决这个问题:
ExecutorService es = Executors.newSingleThreadExecutor ();
Future<Integer> task = es.submit(new MyCallable());
Run Code Online (Sandbox Code Playgroud)
您将获得FutureTask句柄,该句柄将在任务完成后保存结果:
Integer result = task.get ();
Run Code Online (Sandbox Code Playgroud)
FutureTask提供了更多的方法,比如cancel,isDone和isCancelled取消执行,并要求状态.get方法本身阻塞并等待任务完成.查看javadoc了解详情.
class Whatever implements Runnable {
private volatile String string;
@Override
public void run() {
string = "whatever";
}
public String getString() {
return string;
}
public void main(String[] args) throws InterruptedException {
Whatever whatever = new Whatever();
Thread thread = new Thread(whatever);
thread.start();
thread.join();
String string = whatever.getString();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12079 次 |
| 最近记录: |