android 对线程join的理解

sleep和yield有点相似都是让步,但是让法不一样
sleep表示,当前线程停 一定时间后,再往下执行。把机会让给别的线程。他不管优先级,反正哥就是让别的先走
yield表示给同优先级或更高优先级的线程一个运行的机会。至于有没有生效,不太确定。

join:表示等其它线程,它有一个时间参数,也可以没有时间参数。当没有的时候,是表示,等这个线程执行完才往下执行。
当有时间参数的时候,有两种情况:
先设:主线程为mainThread,分线程为aThread.
mainThread里执行aThread.join(10000) ;表示mainThread等aThread执行10秒再说。但如果10秒里,aThread最多只要执行5秒就完事,那么,mainThread只要等5秒就会不再等了。因为aThread已经完事了。如果10秒里aThread要10秒以上的时间才能执行完。那会怎样呢?mainThread会不管你执行完没完,等你10秒就不等了。哥先走一步。

  1. package join;

  2. public class JoinTest
  3. {
  4.     public static void main(String[] args) {
  5.               Thread t = new Thread(new MyRunable());
  6.                t.start();
  7.               try {
  8.                        System.out.println("join前");
  9.                        t.join(100000);
  10.                       System.out.println("join后");
                        }
  11.                catch (InterruptedException e) {
  12.                        e.printStackTrace();
                   }
  13.         }
  14. }

  15. class MyRunable implements Runnable {
  16.        @Override
  17.          public void run() {
  18.                 try {
  19.                       System.out.println("开始睡");
  20.                       Thread.sleep(2000);
  21.                       System.out.println("睡完");
  22.                 } catch (InterruptedException e) {
  23.                     e.printStackTrace();
  24.                    }
  25.           }
  26. }
复制代码

以上代码是等了10秒,但是分线程2秒就完事,所以,2秒后主线程就开始往下走了。大家可以修改时间感受一下,记住如果join()里没有时间参数,表示,无限等,等它完事才往下执行,比较痴情哦。杨过才16年呢
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值