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()方法没别的方法了吗?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【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 %                  
    敬礼!
      

  2.   


    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;
        }
    }