12

Android のコンポーネントの 1 つで Java ThreadPoolExecutor を使用する必要があります。allowCoreThreadTimeout( ) の使用を検索していました。

関連する Java と Android のドキュメントを読みました。しかし、メソッドの有用な実装シナリオは得られませんでした。誰かが私を助けてくれませんか??

4

5 に答える 5

10

このメソッドを使用すると、スレッド キープ アライブ時間内に着信タスクがない場合に、コア スレッドを終了するかどうかを指定できます。これは、setCorePoolSize()、setKeepAliveTime(..) などの他の構成に関連しています。

スレッド プールを作成していて、タスクが実行されていないにもかかわらず、アイドル状態のスレッドがプールに存在する場合。これらのスレッドを維持するにはコストがかかります。実行するタスクがないときにこれらを取り除きたい場合は、この方法が役立ちます。真の値を渡す必要があります。そうすると、キープアライブ時間の後に死ぬことになります。

要約すれば:

allowCoreThreadTimeOut(true) // Could save memory compromising performance

allowCoreThreadTimeOut(false) // Comsume memory but high performance 
于 2013-08-14T07:41:58.527 に答える
2
public void allowCoreThreadTimeOut(boolean value)

これはjavadocで大いに説明されています

キープアライブ時間内にタスクが到着しない場合にコアスレッドがタイムアウトして終了し、新しいタスクが到着したときに必要に応じて置き換えられるかどうかを管理するポリシーを設定します。

false の場合、着信タスクがないためにコア スレッドが終了することはありません。true の場合、非コア スレッドに適用される同じキープアライブ ポリシーがコア スレッドにも適用されます。継続的なスレッドの置き換えを回避するには、true を設定するときにキープアライブ時間を 0 より大きくする必要があります。このメソッドは通常、プールがアクティブに使用される前に呼び出す必要があります。

于 2013-08-14T07:42:11.753 に答える