Поведение потока при блокировке переменной-члена

До сих пор я хотел сохранить эти разделенные запятыми списки в своем SQL-db - хорошо осведомленный обо всех предупреждениях!

Я все думал о том, что у них есть преимущества по сравнению с поисковыми таблицами (которые обеспечивают способ нормализации база данных). После нескольких дней отказа я увидел свет:

  • Использование поисковых таблиц НЕ вызывает больше кода, чем эти уродливые строковые операции при использовании значений, разделенных запятыми, в одном поле.
  • Таблица поиска позволяет создавать собственные числовые форматы и, следовательно, НЕ больше, чем эти поля csv. Хотя это SMALLER.
  • Привязанные строковые операции тонкие в языке высокого уровня (SQL и PHP), но дорогостоящие по сравнению с использованием массивов целых чисел.
  • Базы данных не предназначены для быть правдоподобным, и в основном глупо пытаться придерживаться структур из-за их удобочитаемости / прямой редактируемости, как и я.

Короче говоря, есть причина, по которой нет родной SPLIT () в MySQL.

-1
задан Nizam 19 March 2019 в 16:02
поделиться

1 ответ

Вы выполняете синхронизацию с переменной queue, но вызываете wait() и notify() для объекта this. Вам нужно либо удерживать блокировку кнопками synchornized(this), либо позвонить в queue.wait() и queue.notify(), чтобы убедиться, что вы уведомляете тот же монитор, для которого у вас есть блокировка. Вы можете взглянуть на Документы охраняемых блоков .

Обратите внимание, что вам не нужно создавать очередь самостоятельно. JDK предоставляет несколько реализаций java.util.concurrent.BlockingQueue :

Очередь, которая дополнительно поддерживает операции, которые ожидают, что очередь станет непустой при извлечении элемента, и ожидают места для становятся доступными в очереди при хранении элемента.

0
ответ дан Karol Dowbecki 19 March 2019 в 16:02
поделиться
Другие вопросы по тегам:

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