2017-10-29 8 views
-2

したがって、私は8秒ごとにパケット(スピゴット付き)を送信しようとしています。 私はこれをSpigotのフォーラムに掲載しますが、私はいつも間違いを待っています。私はスケジューラを試みましたが、運はありません。 コード:遅延8秒は機能しませんか?

Object obj = new Object(); 
      try { 
       synchronized (obj) { 
        while (true) { 
         for (Player player : Bukkit.getOnlinePlayers()) { 
          System.out.println("Hi"); 
          obj.wait(8000); 
         } 
        } 
       } 
      } catch (InterruptedException exception) { 
      } 

は、それは何もしないプレーヤープレイヤーの事を無視します。 お願いします。どんな助けもありがとうございます。

+0

あなたは 'のドキュメントを読みました' Timer' ... – MadProgrammer

+5

を使用します待つ? – chrylis

+1

エラーを含めます。私はあなたが投稿したものがエラーを生成したものではないことを推測しています。遅延をほしいと思うのであれば、代わりにThread.sleepを使用してください –

答えて

1

wait()は、プログラムの実行全体をブロックしないように、他の何かが完了するのに時間がかかる間に、コードのチャンクを実行させる非同期プログラミング用のメソッドです。これを、非同期の処理を可能にするメカニズムと考えてください。

は、別のスレッドが 通知()メソッド、またはこの目的のためのnotifyAll()メソッドを呼び出すまで、現在のスレッドを待機させ:ドキュメントの通り。 sleep()一方

は、所望の時間が経過しているので、それはその実行を継続するまで、現在のスレッドが一瞬待機させメソッドです:

現在のスレッドが一時停止になりのThread.sleep指定した期間の の実行。

非同期プログラミングでは、プログラムの実行をブロックする可能性があることを知っていて、その時にはソケットに接続するなど、他の処理をしたい糸。後者は、すべてのスレッドが同じスレッドで一時停止するのを止めたいときです。

何がやりたいことはちょうどあなたの方法の実行を遅延されている場合、これは移動するための方法のようになります。

try { 
    while (true) { 
     for (Player player : Bukkit.getOnlinePlayers()) { 
      System.out.println("Hi"); 
      Thread.sleep(8000); 
     } 
    } 
} catch (InterruptedException exception) { 
    // Catch something here 
} 
+0

スケジューラが動作していませんでした... –

関連する問題