しらとりのブログ

社会人ひよこプログラマのtil

Java

Javaからexeを起動したらデッドロックしてしまった話

TL;DR 下記の条件をすべて満たすとデッドロックします。 呼び出されるexeが標準出力や標準エラー出力に何か書き込むプログラムを持つ ProcessBuilder.start()やRuntime.exec()の後に何もせずProcess.waitFor()する 解決策はProcessが持つストリームのバッフ…

ややこしい委譲の意味

C#に触れていると委譲の意味で混乱することがあるので整理しておきます。 Javaに真の委譲は無い 一般に委譲といえばこちらのイメージ。 コンポジションと転送の組み合わせで処理を委譲する。 Javaのサンプルコード class Operation { public int sum(int x, …