分享

RPC网络同步设计

 小清风的doc 2018-04-03
public Object get() {
        synchronized (this) { // 旋锁
            while (!isDone) { // 是否有结果了
                wait(); //没结果是释放锁,让当前线程处于等待状态
            }
        }
}
1
2
3
4
5
6
7
private void setDone(Response res) {
        this.res = res;
        isDone = true;
        synchronized (this) { //获取锁,因为前面wait()已经释放了callback的锁了
            notifyAll(); // 唤醒处于等待的线程
        }
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多