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()方法没别的方法了吗?
解决方案 »
- top的问题
- 关于String类的2个小问题
- 请问在resion底下运行jsp页面的时候,为什么自动修改<title></title>之间的中文字符?
- 一个类允许有多个实例,但对于每个不同的实例,如果已经存在,就不能再创建.就好比QQ聊天发送信息的界面,与某好友的聊天窗口若已经打开,双击
- ***MSSQL7的jdbc驱动上哪能下载到?在线等***
- 明天去中软国际面试,有去过的兄弟么?说说情况,都考些啥啊?
- Java 5.0执行JAR怎么总出错呢?郁闷!
- 如何实现在一个java的应用程序里复制一个Frame窗口中任意一个Container里的屏幕图象到一个JPanel上?
- 我写了一个JAVA程序,打包成.EXE和.JAR文件。有问题请教各位高手
- JAVA开发过那些应用程序?好象没有???
- BorderLayout问题
- main方法内部的类小代码....想讨论出点东西
楼主【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;
}
}