join
Thread.join(),在main中创建了thread线程,在main中调用了thread.join()/thread.join(long millis), main线程放弃cpu控制权,线程进入WAITING/TIMED_WAITING状态,等到thread线程执行完才继续执 行main线程。
publicfinalvoidjoin() throwsInterruptedException { join(0); }
yield
Thread.yield(),一定是当前线程调用此方法,当前线程放弃获取的CPU时间片,但不释放锁资源,由运 行状态变为就绪状态,让OS再次选择线程。作用:让相同优先级的线程轮流执行,但并不保证一定会轮 流执行。实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。 Thread.yield()不会导致阻塞。该方法与sleep()类似,只是不能由用户指定暂停多长时间。
publicstaticnativevoidyield(); //static方法
sleep
Thread.sleep(long millis),一定是当前线程调用此方法,当前线程进入TIMED_WAITING状态,让出 cpu资源,但不释放对象锁,指定时间到后又恢复运行。作用:给其它线程执行机会的最佳方式。
publicstaticnativevoidsleep(longmillis) throwsInterruptedException;//static方法