![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Здраствуйте, мог бы кто нить подсказать очень простой пример работі с потоками. В Java. А то что я находил и инете для меня біло очень тяжелым. Мне бы синхронизацию и почень простой пример плиз с коментариями
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| GIK |
|
||||||||||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: нет Всего: 14 |
Дочерние потоки можно реализовать двумя способами, один из них реализация интерфейса Runnable который определяет в себе метод run(). Запуск метода run() порождает новый поток. Реализация интерфейса Runnable -самый простой способ. Этот интерфейс определяет метод run() c помощъю которого можно запустить поток. Для этого нужно реализовать сласс с интерфейсом Runnable и как следствие определить в нем метод run(), и создать ссылочную переменную на объект-поток Thread
Желательно переменную определить непосредственно в классе а не в методе-конструкторе, для того чтобы можно было футболить его по всему коду и за его пределы. Что делает эта программа: Запускаем программу с помощью метода main() (создается поток-Главный поток), определяем в этом методе ссылку на главный поток с помощъю метода currentThread()
Далее создается объект а с помощю конструктора при этом поток(выполнение программы) переходит в конструктор класса A, где и будем создавать НОВЫЙ объект-поток, но при этом он еще не будет запущен. В конструкторе передаем ссылку на объект-поток
В параметрах указываем ссылку на объект который реализует интерфейс Runnable (в данном случае это объкт А) и имя потока. Запуск потока происходит с помошью вызова метода start() который запускает метод run() - с этогто момента и родится новый поток. Главный поток при этом естественно возвращается к недовыполненному методу main(), и возвращается он не после того как зыпустит метод run() а после того как закончит выполнение конструктора A(){}. Вот имем ужа два потока, теперь самое главное чтобы главный поток не закончил свою работу первым, это обязательное требование. Для того чтобы главный поток не закончился первым будем ждать пока второй поток не закончится, делаем это с помошью метода join() (указываем на поток) Второй поток при этом будет выполнять свою работу, работу указанную в методе run(). Логика запуска нового потока через реализацию интерфейса Runnable может показатся немного гипким (корявым если хочеш), НО если хорошенько вкурить.... то далее можеш создавать, творить уже что-то свое.
Спрашивай если что не понятно. -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
||||||||||
|
|||||||||||
| Berliner |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 803 Регистрация: 18.5.2005 Репутация: 1 Всего: 2 |
Спасиб за пояснение Только я не понял
это создается только один поток а где в коде другой поток? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
При старте приложения запускается поток main. -------------------- |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |