演示线程中join()方法的特例

/*
 * join()方法实现上使调用它的线程插入运行,阻塞当前的执行,知道调用它的线程的执行,知道调用它的线程执行完毕,才恢复被阻塞线程的运行。
 * 如果调用它的线程是无限循环,其他线程则得不到执行。如果其他线程终端它的运行,则会抛出它的运行,则会抛出异常InterruptedException,
 * 而停止继续运行。
 * 
 * 在几何学中,圆周率可用4(1-1/3+1/5-1/7+1/9……)逼近。如下例子利用join()来正确打印线程执行完毕后产生的圆周率PI。如果没有利用join(),
 * 主线程main首先被执行而子线程还没有得到运行时,将打印0.0;
 * 
 */

/*
 * 功能:演示线程中加入join的用法,特例
 * 作者:鲍志强
 * 日期:2010年4月1日
 */
package 线程中join函数的用法;

public class Demo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub 
Thread demo=new Estimate();
demo.start();
try{
demo.join();                // 阻塞主线程运行直到demo运行完毕
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println("PI="+Estimate.PI);  //打印PI
}

}

//线程类
class Estimate extends Thread
{
public static double PI=0.0;
private int sign=1;
//覆盖run方法
public void run()
{
//估算圆周率PI
for(long i=1;i<=9999999;i+=2)
{
PI+=4.0*(double)sign/i;
sign=-sign;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值