
在我的应用程序中,我在后台线程上运行以下代码:
MyRunnable myRunnable = new MyRunnable();runOnUiThread(myRunnable);synchronized (myRunnable) { myRunnable.wait();}//rest of my codeMyRunnable看起来像这样:
public class MyRunnable implements Runnable { public voID run() { //do some tasks synchronized (this) { this.notify(); } }}我想在myRunnable完成执行后继续后台线程.我被告知上面的代码应该注意这一点,但有两件事我不明白:
>如果后台线程获取myRunnable的锁,那么在它能调用notify()之前不应该是myRunnable阻塞吗?
>我怎么知道在wait()之前没有调用notify()?
解决方法:
> myRunnable.wait()将释放myRunnable的锁并等待notify
>我们总是在等待之前添加支票.
//synchronized wait blockwhile(myRunnable.neeDWait){ myRunnable.wait();}//synchronized notify blockthis.neeDWait = false;myRunnable.notify(); 总结 以上是内存溢出为你收集整理的Java – 等待Runnable完成全部内容,希望文章能够帮你解决Java – 等待Runnable完成所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)