public class FutureTask<V>extends Objectimplements RunnableFuture<V>构造函数:FutureTask(Runnable runnable, V result)
例子:
import java.util.concurrent.FutureTask;class Out implements Runnable{
private int sum,a,b; Out(int a,int b)
{
this.a=a;
this.b=b;
}
public void run()
{
this.sum();
}
public void sum()
{
sum=a+b;
}
public int getSum()
{
return sum;
}
}
public class MulTread
{
public static void main(String[] args)
throws Exception
{
Out o1=new Out(56,23);
FutureTask ft1=new FutureTask(o1,25);
ft1.run();
System.out.println(ft1.get());
}
}真有点搞不太明白这个类(FutureTask)
如果我想用它来得到运行的结果sum的值,这里应该怎么写,get()方法得到的是构造函数result的值,这有什么意义那。result是我们传递进去的。如果想得到线程的运算结果,还有别的方法吗?如果用getSum()方法必须等到线程执行结束,怎么才可以知道什么时候线程运行完毕,除了ft1.join()方法没别的方法了吗?
例子:
import java.util.concurrent.FutureTask;class Out implements Runnable{
private int sum,a,b; Out(int a,int b)
{
this.a=a;
this.b=b;
}
public void run()
{
this.sum();
}
public void sum()
{
sum=a+b;
}
public int getSum()
{
return sum;
}
}
public class MulTread
{
public static void main(String[] args)
throws Exception
{
Out o1=new Out(56,23);
FutureTask ft1=new FutureTask(o1,25);
ft1.run();
System.out.println(ft1.get());
}
}真有点搞不太明白这个类(FutureTask)
如果我想用它来得到运行的结果sum的值,这里应该怎么写,get()方法得到的是构造函数result的值,这有什么意义那。result是我们传递进去的。如果想得到线程的运算结果,还有别的方法吗?如果用getSum()方法必须等到线程执行结束,怎么才可以知道什么时候线程运行完毕,除了ft1.join()方法没别的方法了吗?
楼主【benben2301】截止到2008-07-17 09:09:34的历史汇总数据(不包括此帖):
发帖的总数量:17 发帖的总分数:245 每贴平均分数:14
回帖的总数量:40 得分贴总数量:5 回帖的得分率:12%
结贴的总数量:17 结贴的总分数:245
无满意结贴数:3 无满意结贴分:70
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:17.65 % 无满意结分率:28.57 %
敬礼!
import java.util.concurrent.FutureTask;public class MulTread
{
public static void main(String[] args) throws Exception
{
Out o1 = new Out(56, 23);
//这个构造方法中第二个参数就是计算完成后调用get方法得到的东东
FutureTask<StringBuilder> ft1 = new FutureTask<StringBuilder>(o1, o1.sb);
ft1.run();
System.out.println(ft1.get());
}
}class Out implements Runnable
{
private int sum, a, b;
public StringBuilder sb = new StringBuilder(); Out(int a, int b)
{
this.a = a;
this.b = b;
} public void run()
{
this.sum();
} public void sum()
{
sum = a + b;
sb.append(sum);
} public int getSum()
{
return sum;
}
}