Простое решение для Groovy:
solutionArray.sort{ new Random().nextInt() }
Это сортирует все элементы списка массивов случайным образом, который архивирует желаемый результат перетасовки всех элементов.
Нет к моему знанию никакого стандарта. За время я нашел, что эти инструкции полезны:
краткие названия Использования, потому что они не делают строки в файле журнала слишком долго.
Создают имена, где важная часть вначале. Средства просмотра журнала в графическом интерфейсе пользователя имеют тенденцию иметь таблицы со столбцами, и столбец потока является обычно маленьким или будет сделан маленьким Вами для чтения всего остального.
не используют слово "поток" на имя потока, потому что это очевидно.
делают имена потока легко grep-способными. Избегайте подобных звучащих имен потока
, если Вы имеете несколько потоков аналогичного характера, перечисляете их с идентификаторами, которые уникальны для одного выполнения приложения или одного файла журнала, какой бы ни соответствует Вашим привычкам входа.
избегают обобщений как "WorkerThread" (как Вы называете следующие 5 рабочих потоков?), "GUIThread" (который GUI? это для одного окна? для всего?) или "Вычисление" (что это вычисляет?).
, если у Вас есть тестовая группа, которая использует имена потока к grep файлы журнала Вашего приложения, не переименовывайте свои потоки через какое-то время. Ваши тестеры будут ненавидеть Вас за то, что Вы сделали так. Имена потока в хорошо протестированных приложениях должны установиться.
, когда у Вас есть потоки, которые обслуживают сетевое соединение, попытайтесь включать адрес сети назначения в имя потока (например, channel_123.212.123.3). Не забывайте о перечислении хотя, если существуют многочисленные связи к тому же хосту.
, Если Вы имеете много потоков и забыли называть один, Ваш механизм журнала должен произвести уникальный идентификатор потока вместо этого (определенный для API, например, путем вызова pthread_self ())
в то время как ответ Thorsten является самым всесторонним, Вы могли бы хотеть посмотреть на то, как Tomcat называет свои Потоки. Я нашел это полезным. Мы выполняли несколько потоков с кварцевым планировщиком, и многие из именования постановляет, что Thorsten предлагает, были полезны.
Будут Вами использующий Пул потоков? Если да, то это уменьшит возможности, что можно добавить более полезную meta информацию В противном случае, небо является пределом тому, сколько полезной информации Вы можете иметь.
Именование потоков полезно, и необходимо следовать соглашению о присвоении имен, которое было бы для чего-либо еще, быть что переменные, методы или классы. Назовите их согласно тому, что они делают и быть сжатыми. Если Вы когда-нибудь будете сталкиваться с проблемой, которая требует дампа потока, то будет хорошо посмотреть на имя и знать, где посмотреть в Вашем коде для проблемы вместо того, чтобы исследовать отслеживания стека и предположить.
единственное различное - то, что, если существует несколько потоков того же типа, действительно необходимо добавить какой-то индекс, как имена потока должны быть уникальными для удовлетворения определенных API. Может также помочь с входом при показе имени потока, чтобы знать, как приложение ведет себя с частичным выполнением, происходящим на различных потоках.
Hmmm... В в большой степени многопоточных приложениях я записал, у меня обычно было несколько потоков, выполняющих ту же функцию, таким образом, я не уверен, что именование распараллеливает, очень полезно в том сценарии. Однако я действительно присваивал каждому потоку целочисленный идентификатор, который был распечатан в сообщениях журнала, сгенерированных потоком для помощи в отладке.
Для других приложений, которые имели потоки со специализированными уникальными обязанностями, да я назвал их описательно..., но я не сделал этого, потому что это было потоковое приложение, я сделал это, потому что это - лучшая практика кодирования, чтобы сделать так.
Я склонен приближаться, именование распараллеливает то же как именование методов или переменных. Выберите что-то, что кратко описывает процесс, за который поток ответственен. Я не думаю, что существует большая дополнительная информация, что Вы можете или должны поместить на имя потока. Выразительный, но краткий основная цель.
единственное соглашение могло бы состоять в том, чтобы добавить увеличенный суффикс к потокам, которые являются частью пула.
Я видел несколько соглашений о присвоении имен для потоков в.NET.
Некоторые предпочитают использовать 't' в начале имени (напр. Поток tMain ), но я не думаю, что он имеет любое действительное значение. Вместо этого, почему не только используют простые описательные имена (переменные строки) такой как HouseKeeping, Планировщик и так далее.
Что относительно:
[пространство имен]. [Класс] [.Class...]. [Метод] [текущий поток]?
, Таким образом, у Вас есть имена:
Бизнес. Кэширование. Бизнес ExpireDeadItems1
. Кэширование. Бизнес ExpireDeadItems2
. Кэширование. ExpireDeadItems3
и т.д., для каждого потока.