• 关于for 循环里 线程执行顺序问题


    最近在做项目时遇到了 这样的需求 要在一个for循环里执行下载的操作, 而且要等 下载完每个 再去接着走循环。上网查了一些 觉得说的不是很明确。现在把我用到的代码 贴上 希望可以帮到有此需求的开发者        private Handler mHandler = new Handler() {
                   public void handleMessage(android.os.Message msg) {
                           switch (msg.what) {http://www.huiyi8.com/tab/
                              //访问完网络 走此分支 将锁打开
                             case Constants.DOWN_TEST:
                                    synchronized(object){                        object.notifyAll();                }
                                    break; 

                             //访问网络
                              case Constants.FINISH:                        
                                    ServerDateUtil.getInstance(context, mHandler,
                                                    application).downTestPic(
                                                    application.getNoPortURL(context) + test,
                                                            FileUtils.getPathOfTest() + "/" + sysID
                                                                    + ".jpg", map, happyID);
                                            
                                    break;
                            default:
                                    break;
                            }

                    }
            };


            private Object object = new Object();

    @Override
            public void run() {tab标签

                    for (int i = 0; i < application.getLIST().size(); i++) {
                            synchronized(object){
                            messageString = TestUtil.getInstance(context, application)
                                            .getMsgByHappyID(application.getLIST().get(i));
                            happyID = application.getLIST().get(i);
                            map = ResourceUtil.getMap(messageString);
                            if (map != null) {
                                    SQLiteDB.single(context).saveData(map);
                                    getMsg(map);
                                     //发送通知 在handler 里执行访问网络的方法
                                    Message message = new Message();
                                    message.what = Constants.FINISH;
                                    mHandler.sendMessage(message);
                                   //执行下面的语句  循环进入等待
                                    try {
                                            object.wait();
                                    } catch (InterruptedException e) {
                                            e.printStackTrace();
                                    }
                            }
                            }
                    }

  • 相关阅读:
    OpenStack对象存储管理手册(5) OpenStack对象存储系统管理3
    hdu1568Fibonacci
    智能手机中显示信号强度格数
    上篇日本人经营之道 一破坏对手的情绪乱其方寸
    基于Wince的计算器程序
    shell 字符串操作
    轻松记住大端小端的含义
    如何把手机变成你的救生设备
    PM是一个事实
    mysql 5.6 online ddl 测试
  • 原文地址:https://www.cnblogs.com/xkzy/p/3796784.html
Copyright © 2020-2023  润新知