My-library.info
Все категории

С. Сухов - Основы программирования на Java

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе С. Сухов - Основы программирования на Java. Жанр: Программирование издательство неизвестно, год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Основы программирования на Java
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
269
Читать онлайн
С. Сухов - Основы программирования на Java

С. Сухов - Основы программирования на Java краткое содержание

С. Сухов - Основы программирования на Java - описание и краткое содержание, автор С. Сухов, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info
Учебное пособие разработано в соответствии с программой курса «Информатика» и предназначено для студентов радиотехнического факультета, но может использоваться и студентами других специальностей. Рассматриваются вопросы программирования на языке Java.Направлено на закрепление знаний по курсу «Информатика», читаемого по специальности 210406 «Сети связи и системы коммутации». Учебное пособие подготовлено на кафедре «САПР».

Основы программирования на Java читать онлайн бесплатно

Основы программирования на Java - читать книгу онлайн бесплатно, автор С. Сухов

class Clicker implements Runnable {

int click = 0;

private Thread t;

private boolean running = true;

public clicker(int p) {

t = new Thread(this);

t.setPriority(p);

}

public void run() {

while (running) {

click++;

}

}

public void stop() {

running = false;

}

public void start() {

t.start();

}

}

class HiLoPri {

public static void main(String args[]) {

Thread. currentThread(). setPriority(Thread.M AX_PRIORIT Y);

clicker hi = new clicker(Thread.NORM_PRIORITY + 2);

clicker lo = new clicker(Thread.NORM_PRIORITY - 2);

lo.start();

hi.start();

try {

Thread.sleep(l0000)

}

catch (Exception e) {}

lo.stop(); hi.stop();

System.out.println(lo.click +” vs.” + hi.click);

}

}

По значениям, фигурирующим в итоге, можно заключить, что подпроцессу с низким приоритетом достается меньше на 25 процентов времени процессора:

C:>java HiLoPri

304300 vs. 4066666

10.5. Синхронизация

Когда двум или более подпроцессам требуется параллельный доступ к одним и тем же данным (иначе говоря, к совместно используемому ресурсу), нужно позаботиться о том, чтобы в каждый конкретный момент времени доступ к этим данным предоставлялся только одному из подпроцессов. Java для такой синхронизации предоставляет уникальную, встроенную в язык программирования поддержку. У каждого Java-объекта есть связанный с ним неявный монитор, а для того чтобы войти в него, надо вызвать метод этого объекта, отмеченный ключевым словом synchronized. Для того чтобы выйти из монитора и тем самым передать управление объектом другому подпроцессу, владелец монитора должен всего лишь вернуться из синхронизованного метода. Если у вас есть метод (или целая группа методов), который манипулирует внутренним состоянием объекта, используемого в программе с параллельными подпроцессами, во избежание состояния гонки вам следует использовать в его заголовке ключевое слово synchronized.

В Java имеется элегантный механизм общения между подпроцессами, основанный на методах wait, notify и notifyAll. Эти методы реализованы как final- методы класса Object, так что они имеются в любом Java-Knacce. Все эти методы должны вызываться только из синхронизованных методов. Правила использования этих методов очень просты:

1. wait — приводит к тому, что текущий подпроцесс отдает управление и переходит в режим ожидания до тех пор пока другой подпроцесс не вызовет метод notify с тем же объектом;

2. notify — выводит из состояния ожидания первый из подпроцессов, вызвавших wait с данным объектом;

3. notifyAll — выводит из состояния ожидания все подпроцессы, вызвавшие wait с данным объектом.

10.6. Методы программного интерфейса легковесных процессов

Ниже приведена сводка всех методов класса Thread.


10.6.1. Методы класса

Методы класса — это статические методы, которые можно вызывать непосредственно с именем класса Thread.

1. currentThread - этот статический метод возвращает объект Thread, выполняющийся в данный момент;

2. yield - вызов метода приводит к тому, что исполняющая система переключает контекст с текущего на следующий доступный подпроцесс. Это один из способов гарантировать, что низкоприоритетные подпроцессы

3. когда-нибудь получат управление;

4. sleep(int n) - при вызове метода исполняющая система блокирует текущий подпроцесс на n миллисекунд. После того, как этот интервал времени закончится, подпроцесс снова будет способен выполняться. В большинстве исполняющих систем Java системные часы не позволяют точно выдерживать паузы короче, чем 10 миллисекунд. 10.6.2. Методы объекта


1. start - метод говорит исполняющей системе Java, что необходимо создать системный контекст подпроцесса и запустить этот подпроцесс. После вызова этого метода в новом контексте будет вызван метод run вновь созданного подпроцесса. Вам нужно помнить о том, что метод start с данным объектом можно вызвать только один раз;

2. run - этот метод содержит тело выполняющегося подпроцесса. Это единственный метод интерфейса Runnable. Он вызывается из метода start после того, как исполняющая среда выполнит необходимые операции по инициализации нового подпроцесса. Если происходит возврат из метода run, текущий подпроцесс останавливается;

3. stop - вызов метода приводит к немедленной остановке подпроцесса. Это способ мгновенно прекратить выполнение текущего подпроцесса, особенно если метод выполняется в текущем подпроцессе. В таком случае строка, следующая за вызовом метода stop, никогда не выполняется, поскольку контекст подпроцесса «умирает» до того, как метод stop возвратит управление. Более аккуратный способ остановить выполнение подпроцесса — установить значение какой-либо переменной-флага, предусмотрев в методе run код, который, проверив состояние флага, завершил бы выполнение подпроцесса;

4. setPriority(int р) - метод устанавливает приоритет подпроцесса, задаваемый целым значением, передаваемого методу параметра. В классе Thread есть несколько предопределенных приоритетов-констант: MINJPRIORITY, NORMPRIORITY и MAX PRIORITY, соответствующих значениям 1, 5 и 10. Большинство пользовательских приложений должно выполняться на уровне NORM PRIORITY плюс-минус 1. Приоритет фоновых заданий, например, сетевого ввода-вывода или перерисовки экрана следует устанавливать в MIN_PRIORITY. Запуск подпроцессов на уровне MAX_PRIORITY требует осторожности. Если в подпроцессах с таким уровнем приоритета отсутствуют вызовы sleep или yield, может оказаться, что вся исполняющая система Java перестанет реагировать на внешние раздражители;

5. getPriority - этот метод возвращает текущий приоритет подпроцесса — целое значение в диапазоне от 1 до 10;

setName(String name) - метод присваивает подпроцессу указанное в параметре имя. Это помогает при отладке программ с параллельными подпроцессами. Присвоенное с помощью setName имя будет появляться во всех трассировках стека, которые выводятся при получении интерпретатором неперехваченного исключения;

6. getName - метод возвращает строку с именем подпроцесса, установленным с помощью вызова setName.

11. ввод/вывод

Обобщенное понятие источника ввода относится к различным способам получения информации: к чтению дискового файла, символов с клавиатуры либо получению данных из сети. Аналогично под обобщенным понятием вывода также могут пониматься дисковые файлы, сетевое соединение и т. п. Эти абстракции дают удобную возможность для работы с вводом-выводом (I/O), не требуя при этом, чтобы каждая часть вашего кода понимала разницу между, скажем, клавиатурой и сетью. В Java эта абстракция называется потоком (stream) и реализована в нескольких классах пакета java.io. Ввод инкапсулирован в классе InputStream, вывод — в OutputStream. В Java есть несколько специализаций этих абстрактных классов, учитывающих различия при работе с дисковыми файлами, сетевыми соединениями и даже с буферами в памяти.


11.1. Работа с файлами

File — единственный класс в java.io, который работает непосредственно с дисковыми файлами. Хотя на использование файлов в апплетах наложены жесткие ограничения, файлы по-прежнему остаются основными ресурсами для постоянного хранения и совместного использования информации. Каталог в Java трактуется как обычный файл, но с дополнительным свойством — списком имен файлов, который можно просмотреть с помощью метода list.

Для определения стандартных свойств файла в классе File есть много разных методов. Однако класс File несимметричен. Есть много методов, позволяющих узнать свойства объекта, но соответствующие функции для изменения этих свойств отсутствуют. В очередном примере используются различные методы, позволяющие получить характеристики файла:

import java.io.File;

class FileTest {

static void p(String s) {

System.out.println(s);

}

public static void main(String args[]) {

File fl = new File("/java/COP YRIGHT");

р("Имя файла:" + fl .getName());

р("Путь:" + fl.getPath());

р("Полный путь:" + fl.getAbsolutePath());

р("Родительский каталог:" + fl.getParent());

p(fl.exists() ? "существует" : "не существует");

p(fl.canWrite() ? "можно записывать" : "нельзя записывать");

p(fl.canRead() ? "можно читать" : "нельзя читать");

p("is" + ("Директория? "+fl ,isDirectory() ? "да": " нет");

p(fl.isFile() ? "обычный файл" : "не обычный файл");

р("Последняя модификация файла:" + fl. lastModified());

р("Размер файла:" + fl.length() + " Bytes");

}

}

При запуске этой программы вы получите:

Имя файла: COPYRIGHT

Путь: /java/COPYRIGHT

Полный путь:/Java/COPYRIGHT

Родительский каталог:/java

существует

можно записывать

можно читать

Директория? нет

обычный файл

is absolute

Последняя модификация файла:812465204000

Размер файла:695 Bytes

Существует также несколько сервисных методов, использование которых ограничено обычными файлами (их нельзя применять к каталогам). Метод renameTo(File dest) переименовывает файл (нельзя переместить файл в другой каталог). Метод delete уничтожает дисковый файл. Этот метод может удалять только обычные файлы, каталог, даже пустой, с его помощью удалить не удаётся.


С. Сухов читать все книги автора по порядку

С. Сухов - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Основы программирования на Java отзывы

Отзывы читателей о книге Основы программирования на Java, автор: С. Сухов. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.