![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Корнелиус |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 14.12.2005 Репутация: нет Всего: 1 |
Что это за конструкция?
Непонятно... вроде, создает... и описывает в то же время |
|||
|
||||
| aefimov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 26.1.2006 Репутация: нет Всего: нет |
Обычный аннонимный inner class.
И это не правильная конструкция. Совсем правильная вот такая:
Методы самого треда лучше не перегружать. |
|||
|
||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Эта конструкция создает анонимный класс унаследованный от Thread
Здесь переопределяется метод run() класса Thread.
Здесь у вновь созданного объекта вызывается метод start()
P.S. Лучше такой код не писать. -------------------- 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. |
||||||
|
|||||||
| Beard |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 2 Всего: 9 |
Анонимный класс.
по сути это class MyThread extends Thread { public void run() { o.one(); } } ... new MyThread().start() |
|||
|
||||
| Корнелиус |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 14.12.2005 Репутация: нет Всего: 1 |
Забавно, это пример из туториала )
Объясните, плз, что значит "даем время отработать потокам"? sleep их разве не приостанавливает просто? Или, пока один стоит, другой работает, а потом они меняются? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Просто освобождаем ресурсы для других потоков. Так мы не завесим все нафиг своими циклами. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Thread.sleep(); приостанавливает только текущий поток. Остальные в это время будут выполняться как обычно. -------------------- 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. |
|||
|
||||
| Корнелиус |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 14.12.2005 Репутация: нет Всего: 1 |
То есть, я так понимаю, один поток спит - второй работает. Но потом же они должны местами поменяться. А sleep один раз только вызывается. И то не очень понятно у кого именно:
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет, потоки работают одновременно. Вернее одновременно они работают на многопроцессорной системе, а на однопроцессорной просто постоянно происходит переключение между ними. Для программиста все выглядит так, как будто потоки работают одновременно.
Он вызывается для текущего потока, т.е. в твоем случае это main - основной поток выполнения программы, его создает JVM при запуске приложения. -------------------- 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. |
|||
|
||||
| Корнелиус |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 14.12.2005 Репутация: нет Всего: 1 |
Подзапутался я... А как же эти два: " // Запускаем первый поток, который // вызывает один метод .... // Запускаем второй поток, который // вызывает второй метод ..." Это что не потоки? Зачем их создавать, а sleep() у main звать? Или они - подпотоки? Если можно, подробнее |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это тоже потоки. Там просто создается еще два потока и запускаются. После этого в твоей программе будет 3 потока (вернее их будет больше, но остальные служебные и тебе без надобности). Когда поток создан и запущен, он становится полностью самостоятельным, можешь считать что он получил в свое распоряжение отдельный процессор и выполняется на нем. А sleep() вызывается затем, чтобы на время приостановить поток main, и пока он будет стоять два созданнхы ранее потока успели отработать (они то работают независимо от main-а). Пока поток main спит они успевают вызвать методы one() и two(). Поток main не обязан ждать пока отработают два других потока, но ему нужны результаты их работы, поэтому он ждет. -------------------- 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. |
|||
|
||||
| Корнелиус |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 14.12.2005 Репутация: нет Всего: 1 |
О! Наконец то я въехал. Большое спасибо!
|
|||
|
||||
![]()
|
| Правила форума "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. |