我越到了一个for循环的逻辑问题。我现在想在for循环里面执行一个线程,而线程里面又有一个执行的程序,我想当线程里面的程序执行完成以后,再循环下一次,如for(int i=0;i<10;i++)循环执行完程序后i+1。
                 

解决方案 »

  1.   

    final Object object=new Object();
    for (int i = 0; i < 7; i++){
    synchronized (object){
    new Thread(){
    public void run(){
    synchronized (object){
    try{
    sleep(100);
    }catch (InterruptedException e){
    e.printStackTrace();
    }
    System.out.println(System.currentTimeMillis()+"aaaaa");
    object.notifyAll();
    }
    }
    }.start();
    object.wait();
    System.out.println(System.currentTimeMillis()+"bbbbb");
    }
    }
      

  2.   

    如果要等里面东西执行完,才继续下一步,那又何必用线程呢?
    直接循环执行本该在线程里run的东西就是了
      

  3.   

    方法解读:
    1、全局变量:这种方法简单,但这种风格容易使全局变量泛滥。像这种局变的同步,可以不用提升到全局的层面上。但这种方法的确是实现起来最快的啊~~~双刃剑
    2、做一个任务类:这种方法条理清晰,结构严谨,缺点是代码会比较多。。
    以上两个方法都无法实现线程局部存储,这是上面两点共同的缺点3、启动线程,使用局部变量同步:这种方法的缺点是控制流复杂。优点就是可以使用线程局部存储,或者调用已经写好,不好修改,要求以线程方式启用的模块。以上都是用的Java的线程同步机制
    具体实现需依项目实际选择。