「複数対複数」のモデル (複数のカーネルスレッドに対してユーザースレッドが複数のモデル) は、「単一対単一」のモデルが持つ制限の多くを解消し、マルチスレッドの応用範囲を広げます。2 レベルモデルとも呼ばれる「複数対複数」のモデルは、各スレッドの負荷を軽減し、プログラミング作業も簡潔になります。
「複数対複数」のモデルでは、プログラムは、プロセスを重くしすぎることなく適切な個数のスレッドを持つことができます。ユーザーレベルのスレッドライブラリによって、カーネルスレッドの上位でユーザーレベルのスレッドをスケジューリングすることが可能になります。カーネルが管理する必要があるのは、アクティブになっているスレッドだけです。ユーザーレベルで「複数対複数」のモデルが実装されることにより、アプリケーションで効果的に使用できるスレッド数の制限がなくなるため、プログラミング作業が軽減されます。
つまり、標準のインタフェースを持つより簡単なプログラミングモデルが提供され、すべてのプロセスについて最高のパフォーマンスが得られるようになります。Solaris 上の Java オペレーティング環境は、市販製品で初めてマルチスレッドオペレーティングシステムに「複数対複数」モデルの Java が実装された環境です。