eijiコメントはこの投稿ではオフになっています。Library(KCL)のサンプルプログラムでは、取得した各レコードをシングルスレッドで順次処理している。LibraryのDEFAULT_MAX_RECORDの値を上げたとしても性能が十分出ない。poolなど、DynamoDBにアクセスするためのHTTPのリソースが枯渇してエラーが発生し、Record処理に漏れが生じてしまう。そこで、ExecutorServiceを用いてスレッド数を制御しながらマルチスレッド化する。}ExecutorServiceは、スレッドプールを用いて、マルチスレッドタスクを管理しながら実行できる仕組みで、submit()によりタスクが生成されて、ブロッキングキューに挿入され、shutdown()もしくはshutdownNow()メソッドにより処理を終了させることができる。ExecutorServiceを用いると生成するスレッド数を指定できることから、無尽蔵にスレッドが生成される心配がない。ExecutorServiceは、終了処理を必ず明示的に実装しておく必要があるサービスである。生成済みのタスクは、shutdown()メソッド実行後も処理が継続されるが、shutdownNow()メソッドの場合は、強制的に処理がキャンセルされる。shutdown()メソッド実行を実行したあとも、処理が継続したままである場合があることに注意が必要である。したがって、上記のように、shutdown()メソッドを実行した後に、awaitTermination()メソッドによりタイムアウトの時間を設定しておき、この時間を超えても処理が継続している場合には、shutdownNow()メソッドで強制的に処理を終了させるという実装にすることが望ましい。ExecutorServiceで設定したスレッド数(NUM)が多すぎると以下のエラーが発生するため、スレッド数の上限を設定する際は注意が必要である。プログラムがどれほどスレッドを消費しているかは、以下のコマンドで確認が可能である。-aで確認することが可能である。(1)アーカイブ2020年2月2020年1月2019年12月2019年11月2019年10月2019年9月2019年8月2019年4月2019年3月2019年2月2019年1月2018年12月2018年11月2018年4月2017年4月2016年12月2016年11月2016年10月2016年8月2016年5月2016年4月2016年3月2016年1月2015年12月2015年11月2015年10月2015年9月2015年5月2015年4月2015年2月2012年5月2012年4月2011年6月メタ情報ログイン投稿フィードコメントフィードWordPress.org。