Используйте java.lang.String.format(String,Object...)
как это:
String.format("%05d", yournumber);
для дополнения нуля с длиной 5. Поскольку шестнадцатеричный вывод заменяет d
x
как в "%05x"
.
полные параметры форматирования документируются как часть java.util.Formatter
.
Проблема с разветвлением, когда у вас есть несколько запущенных потоков, заключается в том, что вилка копирует состояние ЦП только одного потока, который его вызвал. Это как если бы все другие потоки просто умерли, мгновенно, где бы они ни находились.
В результате блокировки не снимаются, а общие данные (например, куча malloc) могут быть повреждены.
pthread предлагает функцию pthread_atfork - теоретически вы можете взять каждую блокировку в программе перед разветвлением, освободить их после и , возможно, выжить - но это рискованно, потому что вы можете всегда скучаю по одному. И, конечно же, стеки других потоков не будут освобождены.
Это действительно довольно просто . Проблемы с несколькими потоками и процессами всегда возникают из-за общих данных. Если общих данных нет, то проблем возникнуть не может.
В вашем примере общие данные - это очередь, принадлежащая основному потоку - здесь возникнут любые потенциальные состязания или состояния гонки. Типичные методы «решения» этих проблем включают схемы блокировки - рабочий поток блокирует очередь перед вставкой любых данных,