Java四个线程常用函数是什么


这篇文章主要介绍了Java四个线程常用函数是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使当前线程等待,直到它被唤醒,通常是通过被通知或被中断,或者直到经过一定的实时时间。本身属于一个Object 类,查看源代码也可知:public class Object {查看其源码可知,一共有三个重载的方法,详情源代码如下:具体实战调用代码如下:如果执行到了wait函数,在这4秒内,会释放锁,并且暂停线程。如果这四秒内配合notify()可以唤醒并且得到锁,如果没有唤醒,等待其他来竞争。4秒结束后,会默认自动释放锁当前线程在 Thread.wait()等待过程中,如果Thread结束了,是可以自动唤醒的而且自动释放锁join是Thread类的方法查看其源码,具体源码如下,三个重载的方法主要的时间参数逻辑如下:小于0,抛出异免费云主机域名常等于0,join(A),判断A是否存在,存在才执行操作。该线程执行wait(0)等待,等待A线程执行完后才可结束大于0,同上,只不过执行的是wait(long millis),等待时间结束后才可继续执行操作对比上一个wait函数sleep(long mills):让出CPU资源,但是不会释放锁资源。wait():让出CPU资源和锁资源。查看sleep函数的源码,一共有两个重载函数都是Thread类的函数查看yield()函数的源码,一个重载函数都是Thread类的函数向调度器暗示当前线程愿意放弃当前对处理器的使用。 调度器可以忽略这个提示。Yield是一种启发式尝试,旨在改善线程之间的相对进程,否则会过度使用CPU。 它的使用应该与详细的分析和基准测试相结合,以确保它实际上具有预期的效果。使用这种方法很少是合适的。 它可能用于调试或测试目的,在这些目的中,它可能有助于由于竞争条件而重新生成错误。 在设计并发控制构造(如java.util.concurrent.locks包中的构造)时,它可能也很有用。总的来说,yield函数的功能主要是:让出CPU调度,暂停线程,但不能由用户指定时间只能让同优先级有执行机会wait 暂停该线程,让出cpu,释放锁。(Object类)join暂停该线程,执行该线程之后才能回到自身的线程运行。(Thread类)sleep 暂停该线程,让出cpu,不释放锁。(Thread类)yield 暂停该线程,但是不能由用户制定,只能让同优先级有执行机会。(Thread类)看完以上的源码以及逻辑代码,再讲讲两者的异同总的来说wait函数:让当前线程进入等待状态,wait()会与notify()和notifyAll()方法一起使用。notify为唤醒函数join函数:等待这个线程结束才能执行自已的线程。它的主要起同步作用,使线程之间的执行从“并行”变成“串行”。线程A中调用了线程B的join()方法时,线程执行过程发生改变:线程A,必须等待线程B执行完毕后,才可以继续执行下去共同点:暂停当前的线程都可以通过中断唤醒不同点在于:wait():让出CPU资源和锁资源。sleep(long mills):让出CPU资源,但是不会释放锁资源。看区别,主要是看CPU的运行机制:它们的区别主要考虑两点:1.cpu是否继续执行、2.锁是否释放掉。归根到底:wait,notify,notifyall 都是Object对象的方法,是一起使用的,用于锁机制,所以会释放锁而sleep是Thread类,跟锁没关系,不会释放锁但是两者都会让出cpu资源感谢你能够认真阅读完这篇文章,希望小编分享的“Java四个线程常用函数是什么”这篇文章对大家有帮助,同时也希望大家多多支持百云主机,关注百云主机行业资讯频道,更多相关知识等着你来学习!

相关推荐: docker怎么部署zookeeper集群

这篇“docker怎么部署zookeeper集群”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“docker怎么部署zookeeper集群”文章吧…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/18 20:23
Next 07/18 20:24

相关推荐