首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thread.yield中打开的资源、java中的睡眠和等待方法发生了什么?

Thread.yield中打开的资源、java中的睡眠和等待方法发生了什么?
EN

Stack Overflow用户
提问于 2016-03-26 17:00:40
回答 1查看 136关注 0票数 0

我在一次采访中被问及多线程的问题。

如果在打开资源后调用Thread.yield()或wait(100000)或wait()方法,那么多线程中打开的资源会发生什么变化。它是被关闭还是将处于开放状态?请帮助我理解多线程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-26 17:38:57

sleep(100000)会导致线程在给定的时间内绝对停止执行。所以在那之前你所有的开放资源都是开放的。

yield()方法暂停当前正在执行的线程,为具有相同优先级的其余等待线程提供执行机会。如果没有等待线程,或者所有等待线程都具有较低的优先级,那么相同的线程将继续执行。因此,假设线程获得优先级,则开放资源将被关闭。否则,他们可以保持开放状态。

wait()说“我受够了我的CPU时间。在有人打电话通知()之前,别再给我打电话了。“与睡眠()一样,除非有人调用通知()或其他几种唤醒场景中的一种,否则操作系统甚至不会尝试调度您的任务。因此,您的开放资源将保持打开状态,除非通知被调用,开放的资源被关闭。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36238138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档