неділя, 4 листопада 2012 р.

Многопоточность в Java

При запуске любой программы образуется, по крайней мере, один поток. В Java этот поток запускается при вызове метода main(). Для создания дополнительных потоков необходимо их запустить и назначить им определенные функции, после выполнения которых потоки автоматически будут завершены виртуальной машиной.

В Java для создания потока и назначения им функций есть два способа.

1) Первым из них является наследование от класса Thread (входящего в пакет java.lang) с последующим переопределением метода run() на функцию, которую вы хотите назначить для потока.

public class ExampleThread extends Thread {
 
    public ExampleThread(String str) {
        super(str);
    }
 
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i + " " + getName());
            try {
                sleep((long)(Math.random() * 1000));
            } catch (InterruptedException e) {}
        }
        System.out.println("= DONE: " + getName() + " =");
    }
 
}

Таким образом, происходит наследование от класса Thread с запуском переопределенного метода run().

Назначенная функция организует цикл, при котором на экран выводится строка, после чего программа останавливается на случайный интервал времени. После 10 итераций цикла на экран выводится слов "= DONE: name =", а поток завершается, так как функция закончила свое выполнение.

Создание потока:

public class TwoThreadsDemo {
    public static void main (String[] args) {
        new ExampleThread("Do it!").start();
        new ExampleThread("Definitely not!").start();
    }
}

Результат выполнение main():

0 Do it!
0 Definitely not!
1 Definitely not!
2 Definitely not!
1 Do it!
2 Do it!
3 Do it!
3 Definitely not!
4 Do it!
4 Definitely not!
5 Do it!
5 Definitely not!
6 Do it!
7 Do it!
6 Definitely not!
8 Do it!
7 Definitely not!
8 Definitely not!
9 Do it!
DONE! Do it!
9 Definitely not!
= DONE: Definitely not! =
Ресурс: www.devcolibri.com

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments