- •К экзамену
- •1 Семестр
- •1.Общая характеристика Java
- •2. Жизненный цикл программы Java
- •3. Лексические основы Java
- •4. Операции в Java
- •5. Примитивные типы данных
- •6. Булевские переменные и булевская алгебра
- •7. Условный оператор
- •9. Оператор Break
- •10. Оператор Switch
- •11. Цикл While
- •12. Цикл Do
- •13. Цикл For
- •14. Одномерные массивы
- •15. Многомерные массивы
- •16. Введение в строки
- •Преимущества:
- •Недостатки:
- •Преимущества:
- •Недостатки:
- •17. Основные конструкторы класса String
- •Работа со строками (класс String)
- •21. Класс StringBuffer
- •22. Методы StringBuffer
- •23. Класс StringTokenizer и его методы
- •24. Общие понятия об ооп
- •28. Определение классов и методов
- •29. Модификаторы доступа
- •30. Описание методов
- •38. Статические переменные
- •39. Перегрузка метода
- •40. Рекурсивные методы
- •41. Конструкторы
- •42. Инициализаторы
- •43. Реализация наследования в Java
- •44. Производные методы
- •Замечание
- •Типы исключений
- •2. Блоки try-catch-throw
- •Несколько разделов catch
- •Вложенные операторы try
- •Throw ОбъектТипаThrowable;
- •3. Иерархия классов исключительных ситуаций
- •4. Базовые классы исключений и их методы
- •5. Проверяемые и непроверяемые исключения
- •6. Создание собственных классов исключений
- •7. Типы коллекций в Java
- •8. Класс ArrayList, конструкторы, основные методы
- •9. Класс LinkedList и его методы
- •10. Общая характеристика потоков Java
- •Создание потоков
- •Запуск и остановка
- •Приостановка и возобновление
- •11. Иерархия типов в java.Io
- •12. Класс InputStream и его методы
- •19. Класс File
- •Класс DataInputStream (производный от InputStream)
- •Класс DataOutputStream (производный от OutputStream)
- •Классы BufferedInputStream и BufferedOutputStream
- •Класс RandomAccessFile
- •Классы InputStreamReader и OutputStreamWriter (производные от Reader и Writer)
- •Классы FileReader и FileWriter
- •Зачем сериализация нужна?
- •Как сериализовать объект?
- •Формат сериализованного объекта
- •Алгоритм сериализации Java
- •21. Форматирование данных при выводе Методы printf и format
- •22. Класс Scanner, конструкторы, основные методы
- •23. Архитектура mvc (Model/View/Controller) Архитектура Model-View-Controller (mvc)
- •Еще Java фреймвоки
- •24. Gui общее понятия, принципы реализации в Java
- •25. Событийная модель Java
9. Класс LinkedList и его методы
java.lang. Объект
java.util. AbstractCollection<E>
java.util. AbstractList <E>
java.util. AbstractSequentialList <E>
java.util. LinkedList <E>
Введите Параметры:
E - тип элементов сохранен в этом наборе
Все Реализованные Интерфейсы:
Сериализуемый, Cloneable, Повторяемый <E>, Набор <E>, Двухсторонняя очередь <E>, Список <E>, Очередь <E>
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable
Реализация двунаправленного связанного списка List и Deque интерфейсы. Реализации все дополнительные операции списка, и разрешения все элементы (включая null).
Все операции выполняют, как мог ожидаться для двунаправленного связанного списка. Операции, которые индексируют в список, пересекут список с начала или конца, какой бы ни ближе к указанному, индексируют.
Отметьте, что эта реализация не синхронизируется. Если многократные потоки получают доступ к связанному списку одновременно, и по крайней мере один из потоков изменяет список структурно, это должносинхронизироваться внешне. (Структурная модификация является любой работой, которая добавляет или удаляет один или более элементов; просто установка значения элемента не является структурной модификацией.) Это обычно выполняется, синхронизируясь на некотором объекте, который естественно инкапсулирует список. Если никакой такой объект не существует, список должен быть "обернут", используяCollections.synchronizedList метод. Это лучше всего делается во время создания, чтобы предотвратить случайный несинхронизируемый доступ к списку:
List list = Collections.synchronizedList(new LinkedList(...));
iterators возвратился этим class iterator и listIterator методы являются сбоем быстро: если список структурно изменяется когда-либо после того, как iterator создается, всегда кроме через собственного Итерэтора remove или add методы, iterator бросит a ConcurrentModificationException. Таким образом, перед лицом параллельной модификации, iterator перестал работать быстро и чисто, вместо того, чтобы рискнуть произвольным, недетерминированным поведением в неопределенное время в будущем.
Отметьте, что поведение сбоя быстро iterator не может быть гарантировано, как, вообще говоря, невозможно сделать любые трудные гарантии в присутствии несинхронизируемой параллельной модификации. Приведите бросок iterators к сбою быстро ConcurrentModificationException на основе максимальных усилий. Поэтому, было бы неправильно записать программу, которая зависела от этого исключения для его правильности: поведение сбоя быстро iterators должно использоваться только, чтобы обнаружить ошибки.
Этот class является элементом Платформы Наборов Java.
10. Общая характеристика потоков Java
В этой статье рассказывается, как реализовать потоки, используя язык программирования Java. Перед тем как рассмотреть детали программирования на Java, давайте приступим к обзору о потоках в общем.
Если сказать просто, то поток(thread) – это путь программного выполнения. Большинство программ, написанных сегодня, запускаются одним потоком, проблемы начинают возникать, когда несколько событий или действий должны произойти в одно время. Допустим, например, программа не способна рисовать картинку пока выполняет чтение нажатия клавиш. Программа должна уделять всё своё внимание клавиатуре, вследствие чего отсутствует возможность обрабатывать более одного события одновременно. Идеальным решением для этой проблемы может служить возможность выполнения двух или более разделов программы в одно время. Потоки позволяют нам это сделать.
Многопоточные приложения предоставляют мощь при запуске многих потоков в рамках одной программы. С логической точки зрения, многопоточность означает, что несколько строк из одной и той же программы могут быть выполнены в одно и то же время, однако, это не то же самое, что запустить программу дважды и сказать, что несколько строк кода выполняются в одно время. В этом случае, операционная система обрабатывает две программы раздельно и как отдельные процессы. В Unix, разветвляющий(forking) процесс создаёт дочерний процесс с разным адресным пространством для кода и данных. Вместе с тем, fork() создаёт много накладок для операционной системы, это влечёт за собой интенсивную нагрузку на процессор. При запуске потока, эффективный путь выполнения создаётся за счёт распределения исходного пространство данных родителя. Идея совместного использования данных очень выгодна, но вызывает некоторые вопросы, которые мы обсудим позже.