Вторник, 20.11.2018, 14:06
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1182
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Потоки в JAVA

    В данной статье рассмотрим использование потоков в языке JAVA. В их использовании нет ничего сложного, для того чтобы использовать поток следует наследовать класс Thread и переопределить метод run(), после чего для запуска вызвать метод start(). Рассмотрим на пример запуск потока:

Сначала описываем класс потока в файле myClass.java
    public class myClass extends Thread {
       public void run() {
           System.out.println("I am thread");
       }
    }

А теперь класс главной программы в файле mainClass.java:
    public class mainClass {
       public static void main(String args[]) {
           myClass mc = new myClass();
           mc.start();
       }
    }
При запуске данного кода получим вывод: I am thread
    Это был совсем простой пример, все становится сложнее когда нам нужно управлять потоком, когда он должен выполнять какие-либо действия пока мы его не захотим остановить. Есть далеко не один вариант как это сделать, я опишу тот которым пользуюсь я. Итак наш поток будет выводить сообщение в консоль каждую секунду пока мы его не остановим.
    Сначала описываем JAVA класс с потоком:

    public class ThreadClass extends Thread {
        boolean running;
        public void startThread() {
            running = true;
            start();
        }
       public void stopThread() {
           boolean retry = true;
           running = false;
           while (retry) {
               try {
                   this.join();
                   retry = false;
               } catch (InterruptedException e) {}
           } 
       }
       public void run() {
           while (running) {
               System.out.println("Hello");
               try {
                   sleep(1000);
               } catch (InterruptedException e) {}
           }
       }
   }

А теперь класс главной программы:

    import java.io.IOException;

    public class mainClass {
       public static void main(String args[]) {
           ThreadClass tc = new ThreadClass();
           tc.startThread();
           try {
               System.in.read();
           } catch(IOException e) {} 
           tc.stopThread();
       }
    }

При запуске каждую секунду будет выводиться сообщение "Hello" до тех пор пока мы не нажмем клавишу Enter.
    Теперь разберем что мы тут написали. В JAVA классе потока мы добавили переменную running, она будет означать что поток запущен и как только она примет значение false поток остановится. Так же появились методы startThread и stopThread. startThread изменяет значение running и запускает поток. А stopThread тоже сначала изменят значение running а после этого ожидает пока поток завершится.
    В одной из следующих статей мы рассмотрим как синхронизировать потоки в JAVA. А пока попробуйте напишите какой-нибудь свой простой пример на JAVA использующий потоки:)
 

Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---