2017-08-10 13 views
0

new Threadの行が実行されたときに新しいスレッドを開始したい。私は次のようにしています:"新しいスレッド"は新しいスレッドを開始しませんか?

new Thread (new Runnable() { 

@Override 
    public void run() { 

      ..... 
    } 
}).start(); 

//other code continues here 

コードが新しいスレッドになると、他のコードを実行するようにジャンプします。どうして?

+0

少し前に 'run()'の中でコードを実行します。 – azizbekian

+0

おそらく新しいスレッドを開始しているスレッドをデバッグしているからです。 'run()'メソッドにログラインまたはブレークポイントを置くと、それが実行されたことがわかります – 0xDEADC0DE

+0

@ 0xDEADCODE実行メソッド内の最初のコード行にブレークポイントを設定します...デバッグするとまだ他のコード行に行きます。 – Zobi

答えて

2

新しいスレッドがほぼすぐに実行を開始し、新しいスレッド宣言に続くコードが同じ以前のスレッドによって実行されているからです。

これは何が起こっているかである:

デバッガをアタッチ以外
// Main thread running 

// Some random code... 

new Thread (new Runnable() { 
@Override 
public void run() { 
    // This code will run in another thread. Usually as soon as start() gets called! 
} 
}).start(); 

// This code is still being executed by the main thread. 

、スレッドが実際に実行を開始するかどうかをチェックするための簡単な方法は、run()

+0

メインスレッドと「並行」している別のスレッドで実行されている実行コードをチェックするには?私は、run()内のコードの最初の行にブレークポイントを置いていますが、実行されません。 – Zobi

+0

いつブレークポイントを入れましたか?あなたのアプリを実行する前に、またはその後に? –

+0

@Zobi run()メソッドにログを入れ、実行されているかどうかを確認してください –

0

シンプル内側Log文を置くことです。まさにあなたのために起こることが起こりたい!

あなたは新しい()で新しいスレッドを作成し、あなたはすぐにそのオブジェクトに開始()を呼び出すので、そのジョブはその仕事をして開始します。

あなたのメインスレッドは「メイン」の作業を続けます。それはあなたの友人を彼の肩に拍手する(彼に知らせるために:ランニングを開始する) - そして今あなたは「なぜ彼は行ったのですか?

これがすべてです!

+0

実行メソッド内で実行されているコードをチェックする方法は? – Zobi

+1

これは、このコードが何をしているかによって異なります!そのコードが何をすべきかを明確にするまで、そしてその代わりにあなたが観察するものを明確にするまで、私たちはその部分を助けることはできません。 – GhostCat

+0

アンドロイドアプリからログインしたいのですが、サーバにマウントされたファイルを見つけてそれをダウンロードするよりも – Zobi

関連する問題