Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> run() (Thread) не вызывается, метод start() не обращается к run() 
V
    Опции темы
AbdulBcex
  Дата 15.6.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 6.11.2009

Репутация: нет
Всего: 1



Доброго времени дня. 

Наткнулся в книге по Java на пример с приоритетами потоков. Решил опробовать, "код в код", слово в слово. Не сработало. В общих чертах, есть класс Priority в конструкторе которого создается объект Thread:
Код

public class Priority implements Runnable {    
    int count;
    Thread thrd;
    
    static boolean stop = false;
    static String currentName;    
    
    Priority(String name){
        thrd = new Thread(name);
        count = 0;
        currentName = name;
        System.out.println(currentName + " thread was created.");
    }

    @Override
    public void run() {
        System.out.println(currentName + " starting.");
        do {
            ....            
            }
        } while(stop);
        stop = true;
        
        System.out.println("\n" + thrd.getName() + " terminating.");
    }}


Еще есть класс DEMO с методом main(String args[]), в котором происходит следующее:
Код

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Priority mt1 = new Priority("High priority");
        Priority mt2 = new Priority("Low priority");

...//тут приоритеты присваиваются и т.д.

                mt1.thrd.start(); // Работает только как "new Thread(mt1).start();"
                mt2.thrd.start(); //

                try{
            mt1.thrd.join();
            mt1.thrd.join();
        }catch(InterruptedException exc){
            System.out.println("Main thread interrupted.");
        }

//Дальше не особо важно, поскольку 
//System.out.println(currentName + " starting."); из Priority уже не выводится.


mt1.thrd.start() и mt2.thrd.start(), по-видимому, игнорируются. И программа продолжает выполняться до конца. Никаких ошибок/исключений не происходит.
Разумеется после переписывания и создания новых потоков непосредсвено в DEMO, все заработало. 
Кто-нибудь сталкивался уже? Или лыжи не едут?

Это сообщение отредактировал(а) AbdulBcex - 15.6.2010, 12:54
PM MAIL   Вверх
pathfinder
Дата 15.6.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 3.3.2010

Репутация: 2
Всего: 10



Поскольку здесь thrd = new Thread(name) не задан Runnable, то Thread будет использовать дефолтный(пустой).

PM MAIL   Вверх
AbdulBcex
Дата 15.6.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 6.11.2009

Репутация: нет
Всего: 1



Ну конечноsmile, как же раньше не заметил. 

thrd = new Thread(this, name)

Спасибо за помощь!

Это сообщение отредактировал(а) AbdulBcex - 15.6.2010, 15:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0398 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.