我在一次采访中被问及多线程的问题。
如果在打开资源后调用Thread.yield()或wait(100000)或wait()方法,那么多线程中打开的资源会发生什么变化。它是被关闭还是将处于开放状态?请帮助我理解多线程。
发布于 2016-03-26 17:38:57
sleep(100000)会导致线程在给定的时间内绝对停止执行。所以在那之前你所有的开放资源都是开放的。
yield()方法暂停当前正在执行的线程,为具有相同优先级的其余等待线程提供执行机会。如果没有等待线程,或者所有等待线程都具有较低的优先级,那么相同的线程将继续执行。因此,假设线程获得优先级,则开放资源将被关闭。否则,他们可以保持开放状态。
wait()说“我受够了我的CPU时间。在有人打电话通知()之前,别再给我打电话了。“与睡眠()一样,除非有人调用通知()或其他几种唤醒场景中的一种,否则操作系统甚至不会尝试调度您的任务。因此,您的开放资源将保持打开状态,除非通知被调用,开放的资源被关闭。
https://stackoverflow.com/questions/36238138
复制相似问题