在多线程程序中,我怀疑当一个线程在wait()时,它不会占用太多的cpu利用率,因此cpu可以交换来处理其他线程.
例如,100个线程一起启动相同的任务,而50个线程实际执行任务,而其他50个线程等待直到所有50个任务完成.
后一种情况比前者花费的时间少得多.
任何人都可以建议一些关于此的读物吗?
最佳答案
wait方法有两个目的:
>它将告诉当前正在执行的线程进入休眠状态(不使用任何cpu).
>它将释放锁定,以便其他线程可以唤醒并锁定.
每当方法在同步块内部执行某些操作时,块中的任何内容都必须等待释放锁定的对象.
synchronized (lockObject) {
// someone called notify() after taking the lock on
// lockObject or entered wait() so Now it's my turn
while ( whatineedisnotready) {
wait(); // release the lock so others can enter their check
// Now,if there are others waiting to run,they
// will have a chance at doing so.
}
}
必读:
原文地址:https://www.jb51.cc/java/438207.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。