join的作用是使所属的对象x正常执行run()方法的任务,使当前线程z无限期等待,等待x线程销毁后,在执行z的代码。
join具有使线程排队的作用,有些类似同步的运行效果。join与synchronized的区别
1.join在内部使用wait方法等待
2.synchronized使用的是对象监视器原理作为同步
join过程中,当前对象被中断interrupt,则当前线程抛异常。
join(2000) 与sleep(2000)的区别
1.join释放锁,因为内部使用的是wait,join(long)设定等待时间,经过指定时间后再执行,再等待指定时间的过程中,锁被释放,
其他线程可以调用该线程的同步方法。
2.sleep不释放锁