Апплеты, изображения и звук в JAVA

Информац. системы

Критерии надежности
Задачи
Расчет характеристики
Типовые примеры
Отказы изделия
Аналит. определение
Постоянное резервир.
Резервирование замещением
Расчет надежности
Скользящее резервирование
Расчет показателей
Учебник JAVA
Базовые понятия
Объектно-ориентированное
программирование
Работа со строками и классами
Графические примитивы
Обработка событий в JAVA
Апплеты
Создание сетевых приложений
Сетевые средства в JAVA
Экспертные системы
Учебник Delphi
Компьютерные сети
Топология сетей
Адресация
Структура сети
Сетевые службы
Маршрутизаторы
Технологии ISDN
Протоколы маршрутизации
Модель OSI
Корпоративные сети
Стек протоколов TCP/IP
Коммутация каналов
Коммутация пакетов
Удаленный доступ
Система доменных имен
Моделирование
Основы кодирования
Теория информ. процессов
Обмен информацией
Количество информации
Энтропия
Кодирование
Квантование и дискретизация
Теорема Котельникова
Ошибки дискретизации
Учебник по FrontPage
Информационный подход
SQL язык запросов
Ос новные понятия
Выборка данных

Манипулирование данными

Создание базы данных
Устройство ПК
Архитектура ПК
Классификация элементов
Центральный процессор
Внешние устройства
Программное обеспечение

Базовые понятия языка Java

Объектно-ориентированное программирование в Java

Работа со строками

Графические примитивы Построения графического интерфейса

Основные компоненты их размещение Обработка событий в JAVA Ультрамариновые краски Техника живописи

Создание меню

Апплеты

Изображения и звук

Обработка исключительных ситуаций

Подпроцессы, потоки ввода/вывода, сетевые средства

Коды примеров

Пример 1. Приложение, использующее потоки.

class WalkmanHire {

/* Прокат плееров-экскурсоводов J M Bishop Январь 1997
* Программа имитирует прокат плееров для посетителей музея.
* Имеется некоторое фиксированное количество плееров и не-
* сколько служащих, которые их выдают посетителям под денежный
* залог и принимают обратно с возвратом залога.

* По умолчанию имеется 50 плееров и 3 сотрудника. Эти значения
* можно изменить, если запустить программу с параметрами, на-
* пример,
* java WalkmanHire 100 8.
* Изначально сумма полученного залога равна 0.

* Иллюстрируют применение синхронизации, а также
* использование методов wait и notify.
* В программе одновременно используются потоки двух разных
* типов - класс "Группа посетитителей" и класс "Сотрудник"
*/

public static void main (String [] args) {

// получение числа плееров, начало имитации
// деятельности музея
if (args.length >= 1)
pool = Integer.parseInt(args[0]);
else pool = 50;
Museum m = new Museum (pool);

// получение количества сотрудников,
// создание и запуск потоков для имитации работы сотрудников
if (args.length >= 2)
helpers = Integer.parseInt(args[1]);
else helpers = 3;
for (int i=0; i<helpers; i++)
new Counter (m,i).start();
}
static int pool;
static int helpers;
}

import java.io.*;

class Museum {

Museum (int w) {
walkmen = w;
cash = 0;
}

synchronized void hire (int c,int n) {

// Если недостаточно свободных плееров,
// ждать, пока не будет произведен возврат количества,
// необходимого для текущей группы посетителей

System.out.println("Сотруднику "+c+" требуется "+n+
" плееров");
while (walkmen < n) {
try { wait(); }
catch (InterruptedException e) {}
}

// Выдать плееры и принять залог.
// Пробудить следующий поток, находящийся в состоянии
// ожидания.
walkmen -= n;
cash += n;
System.out.println("Сотрудник "+c+" выдал "+n+" плееров");
System.out.println("Текущее состояние:"+
" Залог: "+cash+" Всего: "+(walkmen+cash)
+ " Плееры в наличии: "+walkmen);
notify ();
}

synchronized void replace (int n) {

// Принять плееры, вернуть залог и пробудить следующий
// поток, находящийся в состоянии ожидания
System.out.println("Возвращено "+n+" плееров");
walkmen +=n;
cash -= n;
notify ();
}

private static int walkmen;
private static int cash;
}

class Visitors extends Thread {

Visitors (Museum m, int w) {
museum = m;
groupSize = w;
}

public void run () {

// Группа осматривает экспозицию музея в течение случайного
// интервала времени (от 1 до 2 секунд), затем возвращает
// плееры и покидает музей.
// Поток "Группа посетителей" уничтожается.
try {sleep((int) (Math.random()*1000)+1);} catch(InterruptedException e) {}
museum.replace(groupSize);
}

Museum museum;
int groupSize;
}

class Counter extends Thread {

Counter (Museum m, int q) {
museum = m;
queue = q;
}

public void run () {

// Генерируется количество посетителей в новой группе,
// выдается нужное количество плееров,
// создается и запускается объект-поток
// для группы посетителей.
while (true) {
int w = a(7);
museum.hire(queue, w);
new Visitors (museum, w).start();

// Генерируется пауза перед приходом
// следующей группы посетителей
try {sleep(a(100));} catch(InterruptedException e) {}
}
}

Museum museum;
int queue;

static int a (int x) {
return (int) (Math.random() * x) +1;
}
}

Математический анализ, лекции по физике Компьютерные сети