Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Остановка треда, при вовзрате в меню


Автор: Цербер 29.1.2010, 13:14
И снова всем привет =)
Есть несколько уровней вложений в апликухе.
Меню -> Категории -> Рубрики - так обстоит структура на данный момент, далее планирую ещё добавить один или два уровня.
Вопрос вот в чём: на уровне "Рубрик" запускаю 2-а треда, при возврате назад в "Категории" (в мидлете стоит обработчик комманд - commandAction), необходимо ли останавливать тред или же он сам отключается? 
Спрашиваю, потому что после посещения нескольких категорий и рубрик, апликуха заметно сбрасывает скорость.
Если тред необходимо останавливать, то как это сделать через мидлет? 

Автор: W0LF 31.1.2010, 20:40
за все Вами запущенные потоки отвечаете Вы сами, если создали - сами и удалите его. удалить поток - выйти из метода run()

Автор: Рамирос 6.2.2010, 22:35
А как удалить поток?

Автор: eugine_s 7.2.2010, 15:34
Цитата(Рамирос @  6.2.2010,  22:35 Найти цитируемый пост)
А как удалить поток?


Читаем внимательно: 

Цитата(W0LF @  31.1.2010,  20:40 Найти цитируемый пост)
удалить поток - выйти из метода run() 



Автор: Рамирос 8.2.2010, 16:11
 аможно потом опять зайти?

Автор: Dancer 8.2.2010, 17:10
Код

class MyThread implements Runnable {
    public void run() {
         // код для исполнени в потоке.
    }
}

class MyClass {
    Thread t1 = new Thread(new MyThread()); // создали экземпляр класса MyThread
    Thread t2;
//// что-то делаем
///   понадобился наш поток: стартуем его.
   t1.start();
//   Вдруг нужно ещё то жесамое действо сделать, но впараллель
  t2 = new Thread(new MyThread());
  t2.start();

// t1 завершиться, когда код в методе run достигнет конца, и выполнение метода будет завершено
// t2 завершиться, когда код в методе run достигнет конца, и выполнение метода будет завершено
// всё зависит от того, как будет запрограммирован это самый метод run() класса MyThread.

}


а ещё лучше, взять книжку по J2SE и почитать/повыполнять оттуда задания/примеры. 

Автор: Рамирос 8.2.2010, 20:13
ага, пасиба!

Автор: W0LF 8.2.2010, 20:42
как по мне - если надо останавливать/запускать поток, лучше, используя синхронизацию, просто его приостанавливать и запускать снова. тратится время процесорное на создание потока, если потом будет идти задача на оптимизацию по скорости - Вам будет тяжеловато

Автор: Рамирос 8.2.2010, 23:07
да, и ещо. может лучше так
Код
run(){while(true){if(nada_delaty==1){
//когда тред ненужен
nada_delaty=2;
}}}
 

Автор: W0LF 8.2.2010, 23:42
нет, так нельзя! есть примеры в wtk, мой любимый - пример с сокетами, там все показано и рассказано

Автор: Рамирос 9.2.2010, 20:41
почемуже так нельзя?

Автор: W0LF 10.2.2010, 00:14
потому что поток будет работать вхолостую лишь с одной проверкой тратя дальше Ваше процессорное время

Автор: Рамирос 10.2.2010, 17:11
а что так много тянет одна проверка????????????

Автор: W0LF 10.2.2010, 20:36
убери проверку, просто запусти в эмуляторе поток - while (true) {}
посмотри что тебе скажет процессор.

Автор: Рамирос 10.2.2010, 22:24
немогу понять где смотреть как работает мидлет. 
А можно ведь посмотреть с самого мидлета, так ведь?
Интерестно какой ето код нада??

Автор: ivanovpv 11.2.2010, 08:38
Цитата(Рамирос @  10.2.2010,  17:11 Найти цитируемый пост)
а что так много тянет одна проверка???????????? 


Когда говорят так - рука так и тянется к товарищу Маузеру...  Сразу видно человек не проходил школу программирования c 8 кб RAM на 8-ми разрядном процессоре с частотой 500 кгц. smile 

Автор: Рамирос 11.2.2010, 16:03
рука тянется?
Нет, не делайте етого....... Суицида
Лучьше продолжайте заниматься программированием!!!!!!!!!!!!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)