java多线程学习(三)

来源:互联网 发布:支持绑定第三方域名 编辑:程序博客网 时间:2024/05/29 18:15

上一个博客讲到输出是0的问题,其实也很好解决,方法就是,轮询!

在这个主程序中,我们不停地检测getresult的结果是否为零,如果不为零,就说明run完了,就输出结果!


package lunxun;class lunxunThread extends Thread{private int result;public int getresult(){return result;}public lunxunThread(){}@Overridepublic 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,计算完了吗?计算完了吗?......不能去做其他的事了!
于是,我们还有一个好方法,让线程告诉主程序“执行完了”,这样不就解决这个问题了?




0 0
原创粉丝点击