栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

等待一个Runnable完成,然后再运行另一个Runnable

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

等待一个Runnable完成,然后再运行另一个Runnable

您可以使用

wait
notify
方法。

为此,需要有一些全局可访问的对象,该对象此时的程序中其他任何东西都未使用其锁定。我假设列表创建者

Runnable
本身可以扮演这个角色。

因此,您可以将以下内容添加到创建列表的

Runnable
类中:

private boolean listsDone = false;boolean getListsDone() {    return listsDone;}

run()
在创建列表之后,立即对其方法进行如下操作:

synchronized (this) {    listsDone = true;    notifyAll();}

在其他人

Runnable
run()
方法需要等待的时候,类似这样:

synchronized (listCreatingRunnableObject) {    if (!listCreatingRunnableObject.getListsDone()) {        try { listCreatingRunnableObject.wait();        } catch (InterruptedException e) { // handle it somehow        }    }}

更新:
为明确起见,两个

synchronized
块都需要在同一对象上同步,并且您必须在该对象上调用
wait()
notifyAll()
。如果对象是
Runnable
,则它对于第一个对象是隐式的(如上面的代码所示),但是如果是活动对象,则在两种情况下都需要显式使用活动对象。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号