java多线程学习(三)

上一个博客讲到输出是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,计算完了吗?计算完了吗?......不能去做其他的事了!
于是,我们还有一个好方法,让线程告诉主程序“执行完了”,这样不就解决这个问题了?




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值