直してみました

substringの生成のオーバーヘッドまでとりきれていないですが、少しパフォーマンスは改善しているはずです。残していますが、たぶん、ここまでやるとExecutorが不要になると思います。
参考までに。