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 руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги

На первый взгляд кажется, что упомянутые выше методы удобны для управления потоками, но пользоваться ими все же не рекомендуется по следующим причинам. При выполнении метода suspend () иногда возникают серьезные осложнения, приводящие к взаимоблокировке. Метод resume () сам по себе безопасен, но применяется только в сочетании с методом suspend (). Что же касается метода stop () из класса Thread, то и он не рекомендуется к применению, начиная с версии Java 2, поскольку может вызывать порой серьезные осложнения в работе многопоточных программ.

Если методы suspend (), resume () и stop () нельзя использовать для управления потоками, то может показаться, что приостановить, возобновить и остановить поток вообще нельзя. Но это, к счастью, не так. Поток следует разрабатывать таким образом, чтобы в методе run () периодически осуществлялась проверка, следует ли приостановить, возобновить или остановить поток. Обычно для этой цели используются две флаговые переменные: одна — для приостановки и возобновления потока, другая — для остановки потока. Если флаговая переменная, управляющая приостановкой потока, установлена в состояние исполнения, то метод run () должен обеспечить продолжение исполнения потока. Если же эта флаговая переменная находится в состоянии приостановки, в работе потока должна произойти пауза. А если переменная, управляющая остановкой потока, находится в состоянии остановки, исполнение потока должно прекратиться.

Следующий пример программы демонстрирует один из способов реализации собственных версий методов suspend (), resume () и stop ().

// Приостановка, возобновление и остановка потока.

class MyThread implements Runnable {

Thread thrd;

// Если эта переменная принимает логическое значение

// true, исполнение потока приостанавливается.

volatile boolean suspended;

// Если эта переменная принимает логическое значение

// true, исполнение потока прекращается.

volatile boolean stopped;

MyThread(String name) {

thrd = new Thread(this, name);

suspended = false;

stopped = false;

thrd.start();

}

// Точка входа в поток

public void run() {

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

try {

for(int i = 1; i < 1000; i++) {

System.out.print(i + " ");

if((i %10)==0) {

System.out.println() ;

Thread.sleep(250) ;

}

// Для проверки условий приостановки и остановки потока

// используется следужхций синхронизированный блок.

synchronized(this) {

while(suspended) {

wait();

}

if(stopped) break;

}

}

} catch (InterruptedException exc) {

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

}

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

}

// остановить поток

synchronized void mystopO {

stopped = true;

// Следующие операторы обеспечивают полную

// остановку приостановленного потока,

suspended = false;

notify();

}

// приостановить поток

synchronized void mysuspend() {

suspended = true;

}

// возобновить поток

synchronized void myresume() {

suspended = false;

notify();

}

}

class Suspend {

public static void main(String args[]) {

MyThread obi = new MyThread("My Thread");

try {

Thread.sleep(1000); // позволить потоку оЫ начать исполнение

obi.mysuspend();

System.out.println("Suspending thread.");

Thread.sleep(1000);

obi.myresume();

System.out.println("Resuming thread.");

Thread.sleep(1000);

obi.mysuspend();

System.out.println("Suspending thread.");

Thread.sleep(1000);

obi.myresume();

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