Необходимо действительно посмотреть Разработчик Процесса . Это действительно создается для такого рода вещи.
ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "myArg1", "myArg2");
Map env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();
Это связано с моделью согласованности совместно используемой памяти, которую реализует аппаратное обеспечение. Для тех аппаратных архитектур, которые реализуют какую-то модель смягченной согласованности (например, семантику релиза), сильные операции, на которые вы ссылаетесь выше, могут иметь большие накладные расходы, и, таким образом, эксперты могут использовать более слабые формы для реализации алгоритмов, которые хорошо работают и на этой расслабленной согласованности архитектур.
Для получения дополнительной информации см., Например,
http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf
Глава 12 и Приложение C в http : //kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html