zoukankan      html  css  js  c++  java
  • 关于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();
                                    }
                            }
                            }
                    }

  • 相关阅读:
    技术晨读_2015_11_29
    mysql的timeout
    Gradle目录解析
    flexbox简介
    elasticsearch 查询(match和term)
    内存那些事
    elasticsearch 文档
    elasticsearch 集群
    elasticsearch中的API
    小菜的程序员道路(三)
  • 原文地址:https://www.cnblogs.com/xkzy/p/3796784.html
Copyright © 2011-2022 走看看