多线程常见的几种方法

222 阅读1分钟

多线程常见的几种方法

  • 是否了解多线程开发里常用的方法,sleep/yield/join wait/notify/notifyAll,分别解释一下
sleep
    属于线程Thread的方法
    让现场暂缓执行,等待预计时间之后再恢复
    交出CPU使用权,不会释放锁
    进入阻塞状态TIME_WAITING,睡眠结束变为就绪Runnable
yield
    属于线程Thread的方法
    t1/t2/t3
    暂停当前对象线程的对象,去执行其他线程
    交出CUP使用权,不会释放锁,和sleep相似
    作用:让相同优先级的线程执行,但是不能保证一定轮流
    注意:不会让线程进入阻塞状态,直接变为就绪Runnable,只需要重新获取CPU使用权
join 
    属于线程Thread方法
    在主线程上运行调用该方法,会让主线程休眠,不会释放已经持有的对象锁
    让调用join方法的线程先执行完毕,在执行其他线程
    类似像救护车和警察优先通过


wait
    属于Object的方法
    当前线程调用对象的wait方法,会释放锁,进入线程的等待队列
    需要依靠notify或者notifyAll唤醒,或者wait(timeout)时间自动唤醒
    
notify
    属于Object的方法
    唤醒在对象监视器上等待的单个线程,选择是任意的
    
    
notifyAll
    属于Object的方法
    唤醒在对象监视器上等待的全部线程