- •Понятие информационного ресурса. Ит: определение, способы использования
- •2. Цель, методы и средства создания информационных ресурсов(ир)
- •1. Математические – совокупность моделей разного уровня(от глобальных моделей принятия решения до частных моделей реализации информационных процессов);
- •2. Технические – средства реализации информационных процессов. Сюда входят вычислительные машины и средства на их основе;
- •3. Алгоритмические – алгоритмы реализации математических средств;
- •3. Протоколы tcp/ip применительно к ир
- •4. Сеть, структура сети, маска подсети
- •5. Мосты в сетях tcp/ip. Доменные имена узлов.
- •6. Архитектура mainframe
- •7. Архитектура «Клиент-сервер»
- •Преимущества
- •Недостатки
- •8. Архитектура Intranet.
- •9. Программирование в web: доступ к бд на стороне сервера.
- •10. Программирование в web: доступ к бд на стороне клиента.
- •11. Синтаксис url. Протокол http.
- •12. Передача данных форм. Кодирование в url.
- •13. Стандартный ввод и метод Post.
- •14. Интерфейс Windows cgi. Файлы данных cgi.Интерфейс Windows cgi.
- •15 Файлы данных cgi.
- •15. Обработка результатов на сервере в сети при передаче данных.
- •16. Директивы включения на стороне сервера (ssi).
- •17. Понятие безопасности web-сервера. Принципы безопасности web-сервера.
- •18. Решение вопросов безопасности для web-сервера.
- •19. Характеристики языка Java.
- •20 Байткоды.
- •21 Средства разработки Java.
- •22 Базовая модель Java 1.0.
- •23 Типы данных, переменные и массивы в Java. Преобразование типов в Java. Типы данных
- •Массивы
- •24. Область видимости и время жизни переменных в Java.
- •25. Классы Java. Определение класса в Java. Создание объекта класса.
- •26 Методы Java. Определение методов в Java. Конструкторы Java.
- •27 Перегрузка методов в Java. Перегрузка конструкторов в Java.
- •28 Использование объектов в качестве параметров.
- •29 Использование ключевого слова this
- •30 Механизм финализации в Java. Сбор мусора.
- •31 Апплеты в Java. Характеристики апплетов.
- •32 Структура аплета.
- •33 Тэги апплета.
- •34 Обработка событий апплета, методы апплета.
- •События, генерируемые клавиатурой
- •35 Методы апплетов в Java.
- •36 Модели обработки событий Java 1.0.
- •37 Размещение объектов для графического пользовательского интерфейса. Диспетчера компоновки
- •38 Использование меню. Окна Frame
- •39 Работа с изображениями.
- •40 Динамическая диспетчеризация методов в Java.
- •41 Абстрактные классы в Java.
- •42 Классы Vector и Rectangle.
- •43 Многопоточное программирование в Java.
- •44 Создание потока. Синхронизация потоков в Java
- •45 Классы пакетов java.Io и java.Net.
- •46 Ввод и вывод в Java
- •47 Новые пакеты Java и особенности Java 1.1
- •48 Встроенные классы и интерфейсы в Java
- •49 Классы-члены в Java
- •50 Новый синтаксис для классов-членов
- •51 Локальные классы
- •52 Анонимные классы.
- •53 Модель обработки событий Java 1.1.
- •55. Использование jar-файлов
- •61. Безопасность Ява-программ
- •Защита виртуальной машины Ява. Верификация файлов ява-программ
- •62. Контроль доступа в Ява с использованием технологии «песочницы»
44 Создание потока. Синхронизация потоков в Java
Поток создается с помощью объекта класса Thread, при этом есть 2 способа:
1. реализация интерфейса Runnable
2. расширение класса Thread
1) Самый легкий путь – создать класс, который реализует интерфейс Runnable. В этом классе достаточно реализовать только метод Run, в котором помещаются операторы, предназначенные для выполнения в новом потоке, причем этот же метод Run может вызывать другие методы, использовать классы и объявлять свои переменные.
С помощью объявления метода Run создается точка входа другого (конкурирующего) потока, выполнение которого заканчивается при завершении метода run. После создания класса, который реализует интерфейс Runnable, необходимо создать экземпляр объекта Thread внутри этого класса. Один из конструкторов имеет следующий вид: Thread (Runnable «объект потока», String «имя потока»);
Объект потока – это ссылка на экземпляр класса, реализованный в интерфейсе Runnable. С помощью этого значения определяется точка входа для выполнения данного потока. Поток не будет выполняться, пока не будет вызван метод start() класса Thread этот метод и предназначен для вызова метода run.
Создать новый поток можно при помощи следующей конструкции.
Thread t;
t = new Thread(this, «поток»);
Передача в качестве параметра ссылки this показывает, что надо создавать поток, который будет вызывать метод run данного объекта.
2) При реализации расширением класса Thread, во-первых, необходимо создать новый класс Thread, а потом создать экземпляр данного класса. В созданном классе необходимо перекрыть метод run, который является точкой входа для нового потока. Кроме этого, в конструкторе необходимо вызвать метод start для запуска потока.
Пример:
class Thread1 implements Runnable{
Thread t;
Thread1(){t = new Thread(this, «поток»);t.start();}
public void run(){
try{
for (int I = 5; i>0; i--){Thread.sleep(500);}
}catch (InterruptedException e){}
}}
class Thread2 extends Thread{
Thread2(){ super(«поток»);start();}
(------ метод run() аналогичен -----)
}
Главный поток программы должен быть последним потоком, заканчивающим свое выполнение. Если он заканчивается, перед тем как завершаться дочерние потоки, то выполняющая машина может зависнуть. Чтобы избежать такой ситуации, используют такие методы, как, например задержка потока sleep(), учитывая время выполнения всех потоков. В классе Thread определены методы, которые могут быть полезны при использовании потоков.
isAlive() – возвращает true, если поток выполняется
join() – ожидает завершения потока, к которому принадлежит.
suspend(), resume() – приостановка и возобновление выполнения потока соответственно.
Синхронизация потоков.
Для решения задач синхронизации 2х и более потоков используется концепция монитора. Это объект, который используется как взаимная блокировка. Лишь один класс может занимать монитор в данное время. Ключевое слово synchronized используется как модификатор доступа при описании методов, доступ к которым следует синхронизировать. public synchronized void decrement() { . . .}
При вызове синхронизированного метода соответствующий ему объект (в котором он определен) блокируется для использования другими синхронизированными методами. В результате предотвращается одновременная запись двумя методами значений в область памяти, принадлежащую данному объекту. Использование синхронизированных методов - достаточно простой способ синхронизации потоков, обращающихся к общим критическим ресурсам. Заметим, что не обязательно синхронизовать весь метод - можно выполнить синхронизацию только критичного фрагмента кода используя служебное слово synchronized как оператор.
synchronized(Account){
if(Account.check(3000000))
Account.decrement(3000000);}
Здесь синхронизация выполняется для объекта Account.
