2016-11-19 2 views
-4

こんにちはStackOverflowのコミュニティ独特 - (;;){}のために - Javaで

は、私は、次のJavaドキュメント(Lock Objects)今日以前のループのために、以下に出くわしたと誰もがすることができるだろうかどうか迷いましたどのような ";;" - ループ条件を意味する?ここで

コード-切り取ら私は(以下に完全なコード)について話しています:ここで

public void run() { 
    Random random = new Random(); 
    for (;;) { 
     try { 
      Thread.sleep(random.nextInt(10)); 
     } catch (InterruptedException e) {} 
     bowee.bow(bower); 
    } 
} 

全体のコード例:

import java.util.concurrent.locks.Lock; 
 
import java.util.concurrent.locks.ReentrantLock; 
 
import java.util.Random; 
 

 
public class Safelock { 
 
    static class Friend { 
 
     private final String name; 
 
     private final Lock lock = new ReentrantLock(); 
 

 
     public Friend(String name) { 
 
      this.name = name; 
 
     } 
 

 
     public String getName() { 
 
      return this.name; 
 
     } 
 

 
     public boolean impendingBow(Friend bower) { 
 
      Boolean myLock = false; 
 
      Boolean yourLock = false; 
 
      try { 
 
       myLock = lock.tryLock(); 
 
       yourLock = bower.lock.tryLock(); 
 
      } finally { 
 
       if (! (myLock && yourLock)) { 
 
        if (myLock) { 
 
         lock.unlock(); 
 
        } 
 
        if (yourLock) { 
 
         bower.lock.unlock(); 
 
        } 
 
       } 
 
      } 
 
      return myLock && yourLock; 
 
     } 
 
      
 
     public void bow(Friend bower) { 
 
      if (impendingBow(bower)) { 
 
       try { 
 
        System.out.format("%s: %s has" 
 
         + " bowed to me!%n", 
 
         this.name, bower.getName()); 
 
        bower.bowBack(this); 
 
       } finally { 
 
        lock.unlock(); 
 
        bower.lock.unlock(); 
 
       } 
 
      } else { 
 
       System.out.format("%s: %s started" 
 
        + " to bow to me, but saw that" 
 
        + " I was already bowing to" 
 
        + " him.%n", 
 
        this.name, bower.getName()); 
 
      } 
 
     } 
 

 
     public void bowBack(Friend bower) { 
 
      System.out.format("%s: %s has" + 
 
       " bowed back to me!%n", 
 
       this.name, bower.getName()); 
 
     } 
 
    } 
 

 
    static class BowLoop implements Runnable { 
 
     private Friend bower; 
 
     private Friend bowee; 
 

 
     public BowLoop(Friend bower, Friend bowee) { 
 
      this.bower = bower; 
 
      this.bowee = bowee; 
 
     } 
 
    
 
     public void run() { 
 
      Random random = new Random(); 
 
      for (;;) { 
 
       try { 
 
        Thread.sleep(random.nextInt(10)); 
 
       } catch (InterruptedException e) {} 
 
       bowee.bow(bower); 
 
      } 
 
     } 
 
    } 
 
      
 

 
    public static void main(String[] args) { 
 
     final Friend alphonse = 
 
      new Friend("Alphonse"); 
 
     final Friend gaston = 
 
      new Friend("Gaston"); 
 
     new Thread(new BowLoop(alphonse, gaston)).start(); 
 
     new Thread(new BowLoop(gaston, alphonse)).start(); 
 
    } 
 
}

+1

私はちょうど 'ループ永遠に'を意味する – pvg

+1

'for(;;)'は無限ループで、正確に 'while(true)'と同じです。この[回答](http://stackoverflow.com/questions/8880870/java-for-vs-whiletrue/8880898#8880898)を参照してください。 –

+1

";;"調子。多くのチュートリアルでは、 'for'ループヘッダーについて説明しているので、単一の'; 'で区切られた3つの部分から構成されています。それで、2人はどこにいるのでしょうか? – Tom

答えて

0

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

forループの3つの式はオプションです。次のように無限ループ を作成することができます。

// infinite loop 
for (; ;) { 

    // your code goes here 
} 

少なくとも投稿する前にドキュメントをグーグルしてください。

+6

回答する前に少なくとも複製を探してください。 –

+0

私はそれに値すると思います。 –

+0

こんにちは@Overt_Agent。これありがとう。私は実際にそれをGoogleで行い、決定的なリソースを見つけることができませんでした。したがって、情報を感謝:)。ありがとう。 – Z101

関連する問題