Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Реализация интерфейса Runnable — это лишь один из способов получения экземпляров потоковых объектов. Другой способ состоит в создании подкласса, производного от класса Thread. В этом проекте будет продемонстрировано, каким образом расширение класса Thread позволяет реализовать такие же функциональные возможности, как и у рассмотренной выше программы UseThreadsImproved.
В подклассе, производном от класса Thread, нужно переопределить метод run (), который является точкой входа в новый поток. Для того чтобы начать исполнение нового потока, следует вызвать метод start (). Можно также переопределить и другие методы из класса Thread, но делать это не обязательно.
Последовательность действий
Создайте файл ExtendThread.java. Скопируйте в этот файл исходный код второго рассмотренного ранее примера программы (файл UseThreadsImproved. java).
Измените объявление класса MyThread. Теперь он должен быть подклассом, производным от класса Thread, как показано ниже. class MyThread extends Thread {
Удалите следующую строку кода: Thread thrd;
Переменная thrd уже не нужна, поскольку класс MyThread включает в себя экземпляр класса Thread и может ссылаться на самого себя.
Внесите в конструктор класса Thread следующие изменения: // построить новый поток.
MyThread(String name) {
super(name); // присвоить потоку имя
start(); // начать поток
}
Как видите, в данном конструкторе присутствует ключевое слово super, которое используется для вызова следующего варианта конструктора Thread: Thread(String имя);
где имя обозначает присваиваемое потоку конкретное имя.
Внесите приведенные ниже изменения в метод run (), чтобы он вызывал метод getName () непосредственно, не предваряя его именем переменной thrd.
// начать исполнение нового метода
public void run () {
System.out.println(getName() + " starting.");
try {
for(int count=0; count < 10; count++) {
Thread.sleep(400);
System.out.println("In " + getName() +
", count is " + count);
}
}
catch(InterruptedException exc) {
System.out.println(getName() + " interrupted.");
}
System.out.println(getName() + " terminating.");
}
Ниже приведен весь исходный код программы, в которой вместо реализации интерфейса Runnable используется подкласс, производный от класса Thread. Выполнение этой программы дает такой же результат, как и предыдущие ее версии.
/*
Пример для опробования 11.1.
Расширение класса Thread.
*/
class MyThread extends Thread {
// построить новый поток
MyThread(String name) {
super(name); // присвоить потоку имя
start (); // начать поток
}
// начать исполнение нового потока
public void run() {
System.out.println(getName() + " starting.");
try {
for(int count=0; count < 10; count++) {
Thread.sleep(400);
System.out.println("In " + getName() +
", count is " + count);
}
}
catch(InterruptedException exc) {
System.out.println(getName() + " interrupted.");
}
System.out.println(getName() + " terminating.");
}
}
class ExtendThread {
public static void main(String args[]) {
System.out.println("Main thread starting.");
MyThread mt = new MyThread("Child #1");
for(int i=0; i < 50; i++) {
System.out.print(".");
try {
Thread.sleep(100);
}
catch(InterruptedException exc) {
System.out.println("Main thread interrupted.");
}
}
System.out.println("Main thread ending.");
}
}
Создание нескольких потоков





