龙空技术网

Java多线程相关的API方法以及作用

微风01 30

前言:

而今小伙伴们对“线程常用api及其作用”大概比较讲究,咱们都需要分析一些“线程常用api及其作用”的相关文章。那么小编在网上网罗了一些对于“线程常用api及其作用””的相关文章,希望朋友们能喜欢,看官们快快来学习一下吧!

概念必须得清楚

yield():让位方法,暂停当前正在执行的线程,让当前线程由"运行状态" 进入到 "就绪状态",但是不可以保证当前线程调用yield()方法之后其他线程就一定可以获得CPU执行权,可能当前线程再次抢到CPU执行权。这个取决于CPU调度,看CPU心情。

join():合并线程,让当前线程进入阻塞状态直到子线程执行结束,当前线程才可以执行。

wait():会让当前线程阻塞,同时让当前线程释放它所持有的锁,直到其他线程调用此对象notify()方法或者notifyAll()方法,当前线程就被唤醒(进入就绪状态

wait()的作用案例解释:Object o = new Object(); o.wait();表示让正在o对象上活动的线程进入等待状态无期限等待)直到被唤醒为止。

notify()和 notifyAll():唤醒当前对象上的等待线程;notify()是唤醒单个线程,notifyAll()是唤醒所有线程

notify()方法并不会释放锁,只是告诉调用过wait()方法的线程 可以参与获取锁的竞争,不是立马可以获取锁,因为锁还别人手里,还没被释放

notify()/ notifyAll()和wait()方法都是Object类的方法,并不是线程的方法

sleep():让当前线程休眠,即当前线程 从 "运行状态" 进入 "休眠(阻塞)",可以指定休眠时间(毫秒),它使得线程在指定的时间进入阻塞状态,时间一过线程重新唤醒,由"阻塞状态"转为 "就绪状态",从而等待CPU的调度执行。不会释放同步资源锁

wait()和sleep()的区别

wait()是Object类的方法,sleep()是Thread类的方法wait()会释放锁,sleep()不会释放锁,抱着锁睡着了wait()必须使用在同步代码块中,sleep()可以使用任何地方

标签: #线程常用api及其作用