java-Android线程并发运行线程之间进行通知

java-Android线程并发运行线程之间进行通知,第1张

概述我想在所有三个线程完成后执行方法uploadingDone().这些标志在大多数情况下都是正确的.在极少数情况下,所有三个设置为true的标志和BLOCK1将执行两次.这三个线程对不同的数据执行不同的任务(不能进行并发修改).我可以使用线程上的任何本机函数消除这些标志吗?所有三个线程都将并

我想在所有三个线程完成后执行方法uploadingDone().
这些标志在大多数情况下都是正确的.在极少数情况下,所有三个设置为true的标志和BLOCK1将执行两次.这三个线程对不同的数据执行不同的任务(不能进行并发修改).

我可以使用线程上的任何本机函数消除这些标志吗?

所有三个线程都将并行运行(强制要求).
BLOCK1应该仅被调用一次.

private synchronized voID uploadingDone(){    if( isItemUploaded && isListUploaded && isstoreUploaded){        uploadingDone = true;         //<BLOCK1>        //Todo move to next screen    }else{        Log.i(TAG, "uploadingDone: Failed");    }}private boolean isListUploaded = false, isItemUploaded = false, isstoreUploaded = false, uploadingDone = false;private class ListUpload extends Thread{    @OverrIDe    public voID run() {        isListUploaded = true;        Log.i(TAG, "ListUpload Thread started");        if(!uploadingDone)            uploadingDone();    }}private class ItemUpload extends Thread{    @OverrIDe    public voID run() {        Log.i(TAG, "ItemUpload Thread started");        isItemUploaded = true;        if(!uploadingDone)            uploadingDone();    }}private class StoreUpload extends Thread{    @OverrIDe    public voID run() {        Log.i(TAG, "StoreUpload Thread started");        isstoreUploaded = true;        if(!uploadingDone)            uploadingDone();    }}private ListUpload ListUpload;private StoreUpload storeUpload;private ItemUpload itemUpload;public voID startUpload(){    ListUpload = new ListUpload();    ListUpload.start();    storeUpload = new StoreUpload();    storeUpload.start();    itemUpload = new ItemUpload();    itemUpload.start();}

谢谢.

解决方法:

跳过标志并添加

ListUpload.join();storeUpload.join();itemUpload.join();// <BLOCK1>

在startUpload()的末尾.每次对join()的调用都会导致调用线程阻塞,直到给定线程完成.

总结

以上是内存溢出为你收集整理的java-Android线程并发运行线程之间进行通知全部内容,希望文章能够帮你解决java-Android线程并发运行线程之间进行通知所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1084882.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存