numberOf(actors) != numberOf(threads) であることに注意してください。
スレッド間で変更可能な状態を共有するエンティティごとにアクターを作成する必要があります。アクター モデルに関するすべてのことは、不変のメッセージのみがアクター間で交換されるように、可変状態を分離する必要があるということです。その結果、ロックが不要になり、プログラムのスレッド セーフについて簡単に推論できます。これは、変更可能なすべての状態がアクターで分離され、フレームワークに依存して、必要なときにいつでもメモリ バリアを適切に渡すことができるためです。アクターをあるスレッドから別のスレッドに切り替える。
スレッドの数は別の問題です。これは、コアの数と各スレッドのブロッキング係数 (つまり、他のスレッドまたは I/O サブシステムの待機に費やす時間の割合) によって異なります。たとえば、アクターが CPU を集中的に使用する計算 (Pi の計算など) を行っている場合、ブロッキング係数は 0% に近くなります。ただし、アクターが主に I/O を実行している場合は、ブロッキング係数が 90% 以上であると簡単に想定できます。
最後に、スレッド数は次のように計算できます。
int threads = Runtime.getRuntime().availableProcessors() * 100 / (100 - blockingCoefficient)
ここで、blockingCoefficient は 0 から 99 までの整数のパーセンテージを表します。