sleep()
,yield()
,join()
,wait()
sleep()
sleep是Thread
类的静态方法,在指定的时间内让当前线程暂停执行,但不会释放锁标志函数
也就是使线程进入阻塞状态
线程
wait()
Object类的方法,在其余的线程调用notify()/notifyAll()
以前,当前线程保持 等待,会释放锁标志,其余线程能够在当前线程wait期间抢占锁。让线程进入等待(阻塞)状态code
wait与notify必须在synchronized函数中或者synchronized代码块中使用,其余地方的使用虽然编译不会出错,可是会抛出异常。资源
yield()
yield只是让当前的线程‘放弃cpu资源,可是放弃的时间不肯定,有可能放弃以后又得到了cpu资源。也就是,让线程再次进入可执行状态,yield只能使得同优先级或者优先级更高的线程得到执行的可能
yield不会释放锁同步
join()
在通常状况下,每每主线程会先于其余线程执行结束。可是有时候主线程须要等待其余线程的执行结果,这时候就能够使用join()
方法来让主线程暂停执行,先执行其余线程,直到其余线程执行完毕,主线程才会接着执行。it
也就是使得主线程阻塞,让调用join()
的线程先执行。还有一个join(long waitTime)
,能够使当前线程只阻塞 wait time 毫秒的时间。当调用join()
方法的线程被中断的时候,程序会抛出异常编译
join(long time)
的内部实现是使用的wait(long time)
实现的,因此,在同步的代码中,会释放锁。yield