上一个博客讲到输出是0的问题,其实也很好解决,方法就是,轮询!
在这个主程序中,我们不停地检测getresult的结果是否为零,如果不为零,就说明run完了,就输出结果!
package lunxun;
class lunxunThread extends Thread{
private int result;
public int getresult(){
return result;
}
public lunxunThread()
{
}
@Override
public void run()
{
int x=0;
for(int y=100;y<100000;y++)
{
if(issushu(y)==false)
{
x=x+y;
}
}
this.result = x;
}
public boolean issushu(int i)
{
for(int x=2;x<Math.sqrt(i);x++)
{
if(i%x==0)
{
return false;
}
}
return true;
}
}
public class lunxun {
public static void main(String[] args) { //主函数
lunxunThread x=new lunxunThread();
x.start();
while(x.getresult()==0)
{
System.out.println("等待run跑完了中。。。");
}
System.out.println("run完了,结果是:");
System.out.println(x.getresult());
}
}
输出结果是:
但是,这样有不好的地方,主函数卡在那里不停地“问”线程x,计算完了吗?计算完了吗?......不能去做其他的事了!
于是,我们还有一个好方法,让线程告诉主程序“执行完了”,这样不就解决这个问题了?