`sleep()`,`yield()`,`join()`,`wait()`

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

相关文章
相关标签/搜索