Knigionline.co » Программное обеспечение » Java руководство для начинающих

Java руководство для начинающих - Шилдт Герберт (2012)

Java руководство для начинающих
  • Год:
    2012
  • Название:
    Java руководство для начинающих
  • Автор:
  • Жанр:
  • Оригинал:
    Английский
  • Язык:
    Русский
  • Издательство:
    Вильямс
  • Страниц:
    316
  • ISBN:
    978-5-8459-1770-6
  • Рейтинг:
    4.3 (4 голос)
  • Ваша оценка:
"Java: руководство для начинающих", автором которого является Герберт Шилдт, а также на его счету популярные по всему миру книги по языкам программирования, таким образом, чтобы у читателя получилось быстро освоить основные навыки программирования на Java. Полностью обновленное по версии Java Platform, Standard Edition 7, пятое издание этого учебного пособия начинается с обзора самых простейших основ, не исключая выполнение простых программ на Java и компилирование. Далее в нем описаны синтаксические конструкции и ключевые слова составляющие основу Java как языка программирования. Затем следует изложение наиболее передовых языковых средств Java, включая многопоточное и обобщенное программирование. Книга завершается введением в библиотеку Swing. Использованный в книге справочный и учебный материал позволяет читателю быстро и легко освоить основы программирования на Java. В целях упрощения процесса изучения Java, учебник построен следующим образом: - Базовые понятия и навыки. Все главы начинаются с перечня базовых понятий и навыков, которые будет необходимо усвоить читателю. - Обращение к знатоку. Во врезках под этим заголовком даны полезные рекомендации в форме вопрос-ответ. - Примеры для опробования. Это примеры небольших проектов, наглядно показывающие, как применять полученные навыки и знания на практике. - Упражнения для самопроверки. В конце каждой главы присутствуют контрольные вопросы и задания для проверки прочности изученного материала. - Подробные комментарии к примерам программ. Все примеры программ в этом учебном пособии снабжены подробными комментариями, которые описывают приемы программирования Java и демонстрируемые языковые средства.

Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги

Ниже приведен пример программы, демонстрирующий использование двух потоков с разными приоритетами. Потоки создаются как экземпляры класса Priority. В методе run () содержится цикл, отсчитывающий число своих шагов. Этот цикл завершает работу, когда значение счетчика достигает 10000000 или же когда статическая переменная stop принимает логическое значение true. Первоначально переменной stop присваивается логическое значение false, но первый же поток, заканчивающий отсчет, устанавливает в ней логическое значение true. В результате второй поток завершится, как только ему будет выделен квант времени. В цикле производится проверка символьной строки в переменной currentName на совпадение с именем исполняемого потока. Если они не совпадают, это означает, что произошло переключение задач. При этом отображается имя нового потока, которое присваивается переменной currentName. Это дает возможность следить за тем, насколько часто каждый поток получает время ЦП. После остановки обоих потоков выводится число шагов, выполненных в каждом цикле.

// Демонстрация потоков с разными приоритетами.

class Priority implements Runnable {

int count;

Thread thrd;

static boolean stop = false;

static String currentName;

/* Построение нового потока. Обратите внимание на то,

что конструктор не запускает поток на исполнение. */

Priority(String name) {

thrd = new Thread(this, name);

count = 0;

currentName = name;

}

// начать исполнение нового потока

public void run() {

System.out.println(thrd.getName() + " starting.");

do {

count++;

if(currentName.compareTo(thrd.getName()) != 0) {

currentName = thrd.getName();

System.out.println("In " + currentName);

}

// Первый же поток, в котором достигнуто значение 10000000,

// завершает остальные потоки.

} while(stop == false && count < 10000000);

stop = true;

System.out.println("\n" + thrd.getName() +

" terminating.");

}

}

class PriorityDemo {

public static void main(String args[]) {

Priority mtl = new Priority("High Priority");

Priority mt2 = new Priority("Low Priority");

// задать приоритеты

// Поток mtl получает более высокий приоритет, чем поток mt2.

mtl.thrd.setPriority(Thread.NORM_PRIORITY+2);

mt2.thrd.setPriority(Thread.NORM_PRIORITY-2);

// запустить потоки на исполнение

mtl.thrd.start();

mt2.thrd.start();

try {

mtl.thrd.join();

mt2.thrd.join();

}

catch(InterruptedException exc) {

System.out.println("Main thread interrupted.");

}

System.out.println("\nHigh priority thread counted to " +

mtl.count);

System.out.println("Low priority thread counted to " +

mt2.count);

}

}

Результат выполнения данной программы выглядит следующим образом:

High Priority starting.

In High Priority

Low Priority starting.

In Low Priority

In High Priority

High Priority terminating.

Low Priority terminating.

High priority thread counted to 10000000

Low priority thread counted to 8183

В данном примере большую часть времени ЦП получает высокоприоритетный поток. Очевидно, что результат выполнения программы существенно зависит от быстродействия ЦП и их количества, типа операционной системы и наличия прочих задач, выполняющихся в системе.

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

Перейти
Наш сайт автоматически запоминает страницу, где вы остановились, вы можете продолжить чтение в любой момент
Оставить комментарий