- - PR -
ThreadPoolExecutorについて
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-12-13 13:16
>ThreadPoolExecutorを生成する側(呼び出し元)のクラスでThreadPool.submit()を呼び出した順番にスレッドが動き出す。動き出した後のスレッドは並行処理(同時処理)される。
>「順序良く実行して行く」と書いたのは「submit()が呼び出された順番にスレッドが割り当てられていくんですよね?」と聞きたかったのです。 NO. submitで登録した処理は並行処理を行うことは保障されますが、どんな順番で実行されるかは解りません。 解らないですし、処理順序に意味があるならば並行処理しちゃマズイでしょう。 (おおよそ登録順に実行するとは思いますが) >Object.hashCode()はそのオブジェクトの先頭アドレスを返す これは誤り。 そもそもサンプルで出力しているのは、実行されるCallableのHashです。 実行しているThreadを知りたいならば、Thread#currentThread() で取得したThredのIDを調べるべきです。 >Callableオブジェクトは削除できるのでしょうか? 削除=GC対象として考えます。 管理はExecutorが行っているので、後処理もやっているはずです。 ただし、使う側でよけいな参照を持っていたら削除されません。 |
|
投稿日時: 2007-12-13 16:18
私の勘違いポイントが分かりました。
nagise>Executor#execute()に渡すのがThreadではなくRunnableというところが nagise>ポイントですね。 はい。 ここは理解できました。 なので わたなべ>>Object.hashCode()はそのオブジェクトの先頭アドレスを返す わたなべ>これは誤り。 わたなべ>そもそもサンプルで出力しているのは、実行されるCallableのHashです。 わたなべ>実行しているThreadを知りたいならば、Thread#currentThread() で取得した わたなべ>ThredのIDを調べるべきです。 これも理解できました。ありがとうございます。 わたなべ>NO. わたなべ>submitで登録した処理は並行処理を行うことは保障されますが、 わたなべ>どんな順番で実行 わたなべ>されるかは解りません。 わたなべ>解らないですし、処理順序に意味があるならば並行処理しちゃマズイ わたなべ>でしょう。 わたなべ>(おおよそ登録順に実行するとは思いますが) はい。 私も上記認識です。 「おおよそ」登録順に実行する。事を言いたかったです。 (表現がまずいですね・・・難しい・・・) nagise>「Callableオブジェクトは削除」とはどういうことを意図していますか? Callableへの参照が無くなる事を意味しているつもりです。 わたなべ>>Callableオブジェクトは削除できるのでしょうか? わたなべ>削除=GC対象として考えます。 わたなべ>管理はExecutorが行っているので、後処理もやっているはずです。 わたなべ>ただし、使う側でよけいな参照を持っていたら削除されません。 上記「管理はExecutorが行っているので、後処理もやっているはずです。」を確認中です。 |