xargs -P max-procsを使えば、同時実行プロセス数を指定して、並列処理ができる。
max-procsが0の時、できるだけ多くのプロセスを起動する。1以上の時は、その数のプロセスを起動する。

例:lsの結果を1つずつsomecommandに渡し、8並列で動かす。

$ ls | xargs -P 8 -n 1 somecommand

-P 8で8並列実行を行う。
-n 1でsomecommandに渡す引数を最大1つにしている。somecommandが何個の引数をとれるのか、あるいは必要とするのかによって、数値を設定する。

例:filenameに入っている各行をechoに渡し、引数の順番を変えて後ろに[改行]という文字をつけ、ランダムに表示する。

$ xargs -a filename -P 0 -d '\n' -I {} echo {}[改行]
2行目の文字列[改行]
1行目の文字列[改行]
6行目の文字列[改行]
4行目の文字列[改行]
5行目の文字列[改行]
3行目の文字列[改行]

-P 0でできるだけ多くのプロセスを起動する。
-I {}で引数を{}にバインドしてくれる。{}の代わりに%でもOK。
-Iをつけると、スペースで区切られず改行のみで区切られるようになるが、空行が表示されなくなる。
空行が表示されなくなるのは、-Iをつけると-x-L 1が自動でつけられ、-Lは空行を使用しないため。
-L 1がつけれられ、1コマンドラインにつき最大1行の入力行を使用するため、-n 1は機能が被るので不要。

-n-Lも空白は無視するが、-dでdelimiterを指定すれば、空行でも表示できる。(指定された文字以外のあらゆる文字が文字通りに解釈され、ファイル終端文字列も無効になるため)
スペースでも改行でも区切りたければ、はじめに-d ' ' -n 1で一つずつスペースで区切ったものを、改めてxargsに渡せばいい。

$ xargs -a filename -d ' ' -n 1 | xargs -P 8 -d '\n' -I {} echo {}[改行]