Демон распараллеливает объяснение

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

223
задан ivanleoncz 3 September 2019 в 04:32
поделиться

4 ответа

Некоторые потоки делают фоновые задачи, как отправка пакетов проверки активности или выполнение периодической сборки "мусора", или что бы то ни было. Они только полезны, когда основная программа работает, и она должна хорошо уничтожить их однажды другой, недемон, потоки вышли.

Без потоков демона, необходимо было бы отслеживать их и сказать им выходить, прежде чем программа сможет полностью выйти. Путем установки их, поскольку демон распараллеливает, можно позволить им выполнить и забыть о них, и когда программа выходит, любые потоки демона уничтожаются автоматически.

422
ответ дан Chris Jester-Young 23 November 2019 в 03:59
поделиться

Скажем, Вы делаете некоторый виджет панели инструментов. Как часть этого, Вы хотите, чтобы он отобразил непрочитанное количество сообщения в Вашем электронном ящике. Таким образом, Вы делаете немного потока, который будет:

  1. Подключение к почтовому серверу и спрашивает, сколько непрочитанных сообщений Вы имеете.
  2. Сигнал GUI с обновленным количеством.
  3. Сон на некоторое время.

, Когда Ваш виджет запускает, он создал бы этот поток, назвал бы его демоном и запустил бы его. Поскольку это - демон, Вы не должны думать об этом; когда Ваш виджет выйдет, поток остановится автоматически.

26
ответ дан John Fouhy 23 November 2019 в 03:59
поделиться

Более простой способ думать об этом, возможно: когда основные возвраты, Ваш процесс не выйдет, если будут потоки недемона, все еще работающие.

Немного совета: Чистое завершение работы легко понять превратно, когда потоки и синхронизация включены - если можно избежать его, сделать так. Используйте потоки демона, когда это возможно.

14
ответ дан Jonathan 23 November 2019 в 03:59
поделиться

Другие плакаты дали некоторые примеры для ситуаций, в которых Вы будете использовать потоки демона. Моя рекомендация, однако, никогда не состоит в том, чтобы использовать их.

Это - не потому что они не полезны, но потому что существуют некоторые плохие побочные эффекты, которые можно испытать при использовании их. Потоки демона могут все еще выполниться после того, как время выполнения Python начинает разъединять вещи в основном потоке, вызывая некоторые довольно причудливые исключения.

[еще 114] информация здесь:

https://joeshaw.org/python-daemon-threads-considered-harmful /

https://mail.python.org/pipermail/python-list/2005-February/343699.html

Строго говоря Вам никогда не нужны они, он просто делает реализацию легче в некоторых случаях.

15
ответ дан Joe Shaw 23 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: