La horquilla se suele confundir con spawn. Spawn es fork + exec (lo que significa que inicia un proceso que reemplaza al actual y hereda algunos de sus recursos externos, como los sockets abiertos ).
Spawn está disponible en Java (a través de System.exec y similares).
La horquilla no está en Java, porque sería extremadamente problemático.
La horquilla requiere la clonación del espacio de direcciones. El soporte del núcleo para hacer esto de manera eficiente no está disponible en la mayoría de los sistemas operativos que no son Unix; p.ej. U/win y Cygwin han luchado para emular el tenedor en Win32. En un lenguaje como Java, el recolector de elementos no utilizados & Los compiladores JIT tienden a tocar las páginas de Vmem, como , que el espacio no permanecerá mucho tiempo compartido después del tenedor.
La clonación tiene muchos efectos secundarios. P. ej., Los búferes de entrada o salida se procesarán en todos los de los hijos bifurcados. La memoria compartida SysV se desconectará.
La mayoría de los idiomas y muchas bibliotecas simplemente se niegan a bifurcación de soporte. Esto incluye la API (POSIX) de enhebrado; El niño no puede usar hilos hasta que ejecute (es decir, se convierta en un engendro)!
Perl utiliza la horquilla porque su interior está muy cerca de C/Unix, y su multihilo es abismal.
shell Unix utiliza una horquilla de diseño, que es la forma en que las instantáneas todas las variables locales y el estado. También es por eso que no hay shell Unix decente para un entorno que no sea de Unix.
¿Por qué el voto a favor? Es una pregunta razonable. –