2016-09-03 7 views
0

初めてこのループが実行される理由を教えてもらえますか?はの条件が成立するまでを待ちますか?Whileループループが時々ある

Random rand = new Random(); 
int i = 0; 
     while (true) { 
      currencyList.put(Currency.EUR, BigDecimal.valueOf(7*rand.nextDouble()+1.2)); 
      currencyList.put(Currency.HRK, BigDecimal.valueOf(7*rand.nextDouble()+1.2)); 
      currencyList.put(Currency.NOK, BigDecimal.valueOf(7*rand.nextDouble()+1.2)); 
      currencyList.put(Currency.USD, BigDecimal.valueOf(7*rand.nextDouble()+1.2)); 
      System.out.println(currencyList); 
      Socket sock = null; 
      if ((sock = serversocket.accept()) != null) { 
       System.out.println("Client " + (++i) + "connected..."); 
       new ServerThreadB(sock,username).start(); 
      } 
     } 
+3

'serversocket.accept()' **ブロック**のため。 –

+0

それを知らなかった。私は最近、スレッドとソケットで作業を始めました。ありがとうございました。私はcurrencyListを計算する新しいスレッドを作成する必要がありますか? – misty

答えて

1

ServerSocketのは、接続が確立されるまで進んでからプログラムを停止します。

プログラムを停止する時間を制限するために、setSoTimeout(long milli)メソッドをミリ秒で使用して、ソケットが放棄されるまでの時間を判断できます。

関連する問題