Javaで複雑なスレッド処理 Javaには当初からThreadクラスがあるが、インスタンス生成が重くて微妙だった。 JDK5からはExecutorが導入されて、WorkerThread的なことはやりやすくなったし、Lock系のクラスも増えて便利になった。また、Futureの導入により処理結果を受け取るのも楽になった。 とはいえ、Future.get()を呼ぶと呼び出しThreadがブロックするからそれもまた別Threadでやって、というようになんか本質的じゃない処理を書かないといけなかったのも確か。 Java8からはCompletableFutureが導入され、より複雑なThread処理を行うことができるようになったようなので、調査をする。 前提知識 同じくJava8で導入されたFunction, Consumer, Supplierを理解していないとよく分からないと思う。以下に記事書いた
