русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Інтерфейс Runnable


Дата додавання: 2014-05-29; переглядів: 1002.


Описаний підхід має один недолік. Оскільки в Java множинне спадкування відсутнє, вимога успадковуватися від Thread може привести до конфлікту. Якщо ще раз подивитися на наведений вище приклад, стане зрозуміло, що спадкування вироблялося тільки з метою перевизначення методу run(). Тому пропонується більше простий спосіб створити свій потік виконання. Досить реалізувати інтерфейс Runnable, у якому оголошений тільки один метод - уже знайомий void run(). Запишемо приклад, наведений вище, за допомогою цього інтерфейсу:

public class MyRunnable implements Runnable { public void run() { // деяка довга дія, обчислення long sum=0; for (int i=0; i<1000; i++) { sum+=i; } System.out.println(sum); }}

Також незначно міняється процедура запуску потоку:

Runnable r = new MyRunnable();Thread t = new Thread(r);t.start();

Якщо раніше об'єкт, що представляє сам потік виконання, і об'єкт із методом run(), що реалізує необхідну функціональність, були об'єднані в одному екземплярі класу MyThread, то тепер вони розділені. Який із двох підходів удобней, вирішується в кожному конкретному випадку.

Підкреслимо, що Runnable не є повною заміною класу Thread, оскільки створення й запуск самого потоку виконання можливо тільки через метод Thread.start().


<== попередня лекція | наступна лекція ==>
Базові класи для роботи з потоками. Клас Thread | Робота із пріоритетами


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн