Cтраница 2
Решение проблемы производителя и потребителя с использованием мониторов, написанное на Java, представлено в листинге 2.8. Решение состоит из четырех классов. Внешний класс, Producer Consumer, создает и запускает два потока, рис. Второй и третий классы, producer и consumer соответственно, содержат программы производителя и потребителя. Класс automonitor является монитором. Он содержит два синхронизированных потока, используемых для текущего помещения элементов в буфер и извлечения их оттуда. [16]
Первый период включает всего два элемента, второй и третий периоды - по восемь, четвертый и пятый - по восемнадцать, шестой, седьмой - по тридцать два элемента. Первые три периода называются малыми, а четвертый и следующие-большими. Большие периоды подразделяются на ряды, малые же периоды совпадают с соответствующими рядами. В каждой группе элементы больших периодов подразделяются на две подгруппы - главную и побочную. Элементы малых периодов - второго и третьего - относятся к главной подгруппе. Основанием для помещения элементов в ту или иную группу являлась максимально возможная валентность элемента - ее значению соответствует номер группы; исключение составляют кислород, фтор, неон и элементы побочной подгруппы VIII группы, валентность которых не достигает соответственно шести, семи и восьми, а также элементы побочной подгруппы I группы, валентность которых достигает трех. Номер каждого периода совпадает с числом электронных уровней в оболочках атомов, а номер группы - с числом электронов на наружном уровне электронной оболочки, хотя это выполняется только для атомов элементов главных подгрупп. [17]
Последняя операция с АТД таблиц символов, которую мы рассмотрим - операция join. В реализации с использованием BST-дерева это сводится к объединению двух деревьев. Существуют различные алгоритмы для выполнения этой задачи, но каждому из них присущи определенные недостатки. Время выполнения подобного решения не линейно, поскольку для каждой вставки может требоваться линейное время. Другой подход связан с обходом обоих BST-деревьев с целью помещения элементов в массив, объединения их и затем построения нового BST-дерева. [18]