2017-02-20 3 views
0

私はandorid.os.HandlerThreadクラスのソースコードを調べていましたが、Process.myTid()がスレッドIDとして使用されていました。HandlerThreadのスレッドID - android

私はそれを少し検索しthis役に立つ答えを見つけて、今私はmyTidが何であるかを理解し、どのようなThread.getId() & myTiddifferenceです。

ここは私の質問です。我々はProcess.myTid()からIDを取得する必要があり

WHY?なぜではないを使用するThread.getId()

@Override 
public void run() { 
    mTid = Process.myTid(); 
    Looper.prepare(); 
    synchronized (this) { 
     mLooper = Looper.myLooper(); 
     notifyAll(); 
    } 
    Process.setThreadPriority(mPriority); 
    onLooperPrepared(); 
    Looper.loop(); 
    mTid = -1; 
} 
+0

IDで何をしたいですか? – DanielLaneDC

+0

何もありません。ただ知りたいだけです。 – mallaudin

+0

それぞれの用途を知りたいですか? – DanielLaneDC

答えて

0

単一ProcessのすべてのあなたのThread実行(アプリケーションが1つの以上のプロセスを有していてもよいです)。すべての単一スレッドはデフォルトプール内で実行されます。これは、カスタムThreadPoolを作成した場合、スレッドIDは同じかもしれませんが、それらは異なるプールに属していますが、各スレッドはProcessの中で実行されるため、各スレッドは固有のIDを持ちます。

Thread.getId()は、スレッドごとにJava静的自動インクリメントを長くするだけです(このスレッドIDは再利用できます)。

Process.getTid() retunrs Os.gettid()

+0

プロセスが2つあり、 'Process.getTid()'がプロセス内で一意のIDを返す場合。一致するIDの可能性**はありませんか? ** 2つの異なるプロセス**でのスレッドIDの照合に注意する必要があるのはなぜですか?私が思うに、各プロセスのスレッドは、他のプロセスとは独立して実行されます。プロセス間でデータを共有する必要がある場合、いくつかのプロトコルを使用しますが、別のプロセスでスレッドを扱うことは意味がありません。私が間違っているなら、私を訂正してください。 – mallaudin

+0

他のプロセスのスレッドを気にする必要はありません。各プロセスが他と独立して実行されていると言われているので、他のプロセスのスレッドを気にする必要はありません。\ –

+0

最初の部分はどうですか? – mallaudin