2017-11-09 6 views
0

マイクラスのコードです。 実行時には、バックグラウンドカラーを100msオレンジにしてから、赤、オレンジ、そしてダークブルーにします。whileループのコードブロックは、コード内の最後のものまで無視されますが、遅延は考慮されますが、

long startTime1 = System.currentTimeMillis(); 
while(System.currentTimeMillis() - startTime1 < 100) 
{ 
    Buildings.background.setColor(Color.orange); 
} 
while(System.currentTimeMillis() - startTime1 < 200) 
{ 
    Buildings.background.setColor(Color.red); 
} 
while(System.currentTimeMillis() - startTime1 < 300) 
{ 
    Buildings.background.setColor(Color.orange); 
} 
while(System.currentTimeMillis() - startTime1 < 400) 
{ 
    Buildings.background.setColor 
     (Color.blue.darker().darker()); 
} 

コードを実行した後、私は青色になりますが、設定には300msかかります。

+1

UIはシングルスレッドであると思われます。つまり、あなたのプログラムがUIに関連するものがビジー状態になるのを待っていると、あなたのループはメインイベント処理ループをブロックします。このすべてを非同期に処理する方法を理解する必要があります*。 –

答えて

0

プログラムを実行した後にコードが実行されますか? あなたのプログラムは実行するのに300ミリ秒以上かかるので、青色になってしまいます。

関連する問題