Thread join方法

作用

1、等待线程死亡:准确地说,应该是一直等到这个线程的run方法执行完毕。

2、之所以要等待这个线程执行完毕的原因是,可能其他的线程或者接下来的业务逻辑代码会依赖这个线程的执行结果,所以要调用join()方法来一直等到这个线程执行完毕,再执行其他的任务。


示例代码

/**
 * 在战争这个舞台上,
 * 1、一会儿隋军多次5连击农民军
 * 2、一会儿农民军又多次反击隋军
 * 3、但更多的时候是你来我往分不出胜负,最后各自鸣金收兵
 * @author Administrator
 *
 */
public class Stage extends Thread{
	public void run(){
		//使用Runnable接口来创建军队线程
		ArmyRunnable taskSuiJun = new ArmyRunnable();
		ArmyRunnable taskNongMingJun = new ArmyRunnable();
		Thread suiJun = new Thread(taskSuiJun,"隋军");
		Thread nongMingJun = new Thread(taskNongMingJun,"农民军");
		
		//启动线程
		suiJun.start();
		nongMingJun.start();
		
		//舞台线程休眠,大家专心观看厮杀
		try {
			Thread.sleep(50);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		//互相厮杀一段时间(大概是50ms)之后,各自鸣金收兵
		taskSuiJun.keepRunning = false;
		taskNongMingJun.keepRunning = false;
		
		//在这里没什么用,因为后面没有其他的任务了
		try {
			nongMingJun.join(); //1、等待这个线程死亡:准确地说,应该是一直等到这个线程的run方法执行完毕    2、作用是,这个线程执行完毕之后,再执行另外的线程或者其他的业务逻辑(试想一下,如果另外的线程或者其他的业务逻辑依赖这个线程的执行结果的话,那么这个方法就超级好用)
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 入口方法
	 * @param args
	 */
	public static void main(String[] args){
		new Stage().start(); //舞台剧开始
	}
}


/**
 * 模拟军队作战攻击
 * @author Administrator
 *
 */
public class ArmyRunnable implements Runnable{
	/**
	 * 用于标识是否攻击
	 */
	volatile boolean keepRunning = true;

	@Override
	public void run() {
		while(keepRunning){
			//5连击
			for(int i=0;i<5;i++){
				System.out.println(Thread.currentThread().getName() + ":第"+ i + "发动攻击");
			    Thread.yield(); //让当前线程放弃cpu执行;cpu下一次执行哪个线程重新分配,也就是说是不确定的
			}
		}
		
		System.out.println(Thread.currentThread().getName() + "战斗结束!");
	}

}


参考

1、http://blog.csdn.net/hustpzb/article/details/8472929
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值