当前位置: 代码迷 >> J2SE >> Java for循环中遇到 await()方法时
  详细解决方案

Java for循环中遇到 await()方法时

热度:260   发布时间:2016-04-23 19:48:30.0
Java for循环中碰到 await()方法时
本帖最后由 Mr__lu 于 2015-05-21 20:59:43 编辑

public static void main(String args[]) {
      for(int i=0;i<3;i++){
Runnable runnable = new Runnable(){
public void run(){
try {
System.out.println("aaaaa");
condition1.await();
System.out.println("bbbbbb");
Thread.sleep((long)(Math.random()*10000));
System.out.println("回应结果");
condition2.countDown();
} catch (Exception e) {
e.printStackTrace();
}
}
};
          }
    cndition1.countDown();
}


当执行第一次for循环的时候,condition1.await() 等待,为什么会输出三次 aaaaa  不应该只输出一次吗  当调用countDown()方法时候 for循环才能继续下去吗?    新手在自己看书学习    请前辈指导下
------解决思路----------------------
不知道 cndition1 是什么..但是不影响....
for 循环里面.. 你每次循环都创建了一个 线程. 你await() 或者 sleep() 都只是对那一个线程来说的, 对于主线程来说 还是继续在走for循环... 所以你会看到 三次 aaaaa
------解决思路----------------------
因为你循环三次new了三个线程你的await是每个子线程分别执行的……所以三个线程三连发了三个aaa
------解决思路----------------------
引用:
Quote: 引用:

不知道 cndition1 是什么..但是不影响....
for 循环里面.. 你每次循环都创建了一个 线程. 你await() 或者 sleep() 都只是对那一个线程来说的, 对于主线程来说 还是继续在走for循环... 所以你会看到 三次 aaaaa


 子线程在哪个地方开辟空间啊,三个子线程是不是在三个不同的地方,然后主线程在一个地方

恩...差不多是这个意思.... 
线程说实话也是对象.. 你new了三个对象.. 肯定是不同的地方...
  相关解决方案