加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java中调用wait()之后线程做了什么?

发布时间:2020-12-14 19:21:57 所属栏目:Java 来源:网络整理
导读:在多线程程序中,我怀疑当一个线程在wait()时,它不会占用太多的cpu利用率,因此cpu可以交换来处理其他线程. 例如,100个线程一起启动相同的任务,而50个线程实际执行任务,而其他50个线程等待直到所有50个任务完成. 后一种情况比前者花费的时间少得多. 任何人都可

在多线程程序中,我怀疑当一个线程在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.
    }
}

必读:

java synchronized

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读