Вы можете написать чувствительную к задержкам систему на Java, но вы должны быть осторожны с распределением памяти, передачей информации между потоками и блокировкой. Вы должны написать несколько простых тестов, чтобы увидеть, сколько времени эти вещи стоят на вашем сервере. (Они различаются в зависимости от ОС и архитектуры памяти)
Если вы сделаете это, вы сможете получить стабильные тайминги для операций до 99,99% времени. Это не правильно в режиме реального времени, но это может быть достаточно близко. В торговой системе использование Java вместо C может стоить 100 фунтов в день, однако стоимость разработки на C / C ++, а не на Java, вероятно, будет намного выше этой. например с точки зрения гибкости, которую он дает нам, и количества ошибок, которые он сохраняет.
Вы можете получить довольно близкое количество джиттера, которое вы видели бы в программе на Си, делающей то же самое. Некоторые называют это "C-like" Java.
К сожалению, для передачи объекта между потоками в Java через ArrayBlockingQueue на серверах, на которых я работаю, требуется около 8 микросекунд, и я предлагаю вам проверить это на своих серверах. Простой тест - передать System.nanoTime () между потоками и посмотреть, сколько времени это займет.
ArrayBlockingQueue имеет «особенность», в которой он создает объект для каждого добавляемого элемента (хотя для этого нет особых причин) Так что если вы найдете стандартную реализацию, которая этого не делает, дайте мне знать.