Комментарии 10
Полезная статья, спасибо.
Одно замечание по самим тестам. Во многих тестах метод SetUp вызывает StartThread, который уже вызывает executor. А метод TearDown сразу вызывает executor. Как-то некошерно с точки зрения дизайна.
И вам спасибо )
Во многих тестах метод SetUp вызывает StartThread, который уже вызывает executor. А метод TearDown сразу вызывает executor.
Я думал об этом и в конце-концов решил исключительно для краткости не выносить одну строку с executor.shutdown()
в отдельный метод.
Использовать нечетные задержки и использовать целочисленное деление- ну такое
для более коротких пауз используйте LockSupport.parkNanos();
На самом деле, зависит от ОС. На Windows всё наоборот: минимальный интервал сна (1мс) достигается именно Thread.sleep
, а LockSupport.parkNanos
при любом положительном аргументе засыпает минимум на 3.9мс (1/256 секунды). Такая вот особенность реализации.
while(wait) Thread.sleep() лучше вообще не использовать, если ожидание обещает быть хоть сколько нибудь долгим - используйте семафоры, например.
А ожидание события с точностью до микросекунд - обычно занятие ядра, поэтому там этих спинлоков много.
И если поток не отдать, на однопроцессорной системе это внезапно получится бесконечный цикл.
Холостые циклы в Java