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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> потоки и медлительность 
V
    Опции темы
Su_
Дата 25.7.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день .
Столкнулся с такой проблемкой :

запускаю свое приложение , там анимация , и она со временем начинаем тормозить .. 
т.е  мерцать , и делать то же что и в начале за другое время ...

у меня , два потока .. и я делаю в одном Thread.sleep .  , 

Код



   _graph.getModel().insert(new Object[] {dgc}, null, null, null, null);
        delay(40);
          
                  _graph.getModel().remove(new Object[] {dgc});

      
       }

   }








    private void delay(long delay) {
       try {
          Thread.sleep(delay);
         
           //Thread.sleep(30,20);

       } catch (InterruptedException e) {

           e.printStackTrace();
       }
   }







что не так ? надо ли как то компенсировать такого рода задержку?


--------------------
user posted image

PM MAIL WWW   Вверх
Kangaroo
Дата 26.7.2008, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



А нормально объяснить? Хоть код приведи, который можно запустить и увидеть ошибку.


--------------------
Lost....
PM MAIL MSN   Вверх
niasilil
Дата 26.7.2008, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 8
Всего: 9



"со временем начинаем тормозить" - очень похоже на то что где то в цикле создаешь кучу объектов, которые потом garbage collector убирает. 
но гадать сложно, нужно код смотреть, тут кенгуру прав. Или лев. 


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
Su_
Дата 26.7.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



рабочий код сложно привести .

но вот часть .. 


Код


//создание обьекта с картинкой внутри
 public  DefaultGraphCell createVertex(String name, double x,
 double y,  double w, double h, ImageIcon a3) {
                 
              
   

      DefaultGraphCell cell = new DefaultGraphCell(name);
           GraphConstants.setBounds(cell.getAttributes(),new Rectangle2D.Double(x, y, w, h));
       GraphConstants.setIcon(cell.getAttributes(),a3);
       cell.addPort();
           return cell;
   }


//перемещение этого обьекта 


 public void connectPeers(int sourcePeerID, int targetPeerID, String msg,ImageIcon a4,Graphics g) throws InterruptedException {
               pb = new ProgressBar();
  
            Icon a6=null;
      //  a4.equals(true) ;
      // a6= (Icon) inst.a2;
       DefaultGraphCell source = _peers.get(sourcePeerID);
       DefaultGraphCell target = _peers.get(targetPeerID);


       Rectangle2D rectangle1 = GraphConstants.getBounds(source.getAttributes());
       Rectangle2D rectangle2 = GraphConstants.getBounds(target.getAttributes());
       Rectangle2D rectangle3 = GraphConstants.getBounds(target.getAttributes()); ;

       DefaultGraphCell dgc;

         
  

       double x = x1, y = y1;
        oldx += x ;
       oldy += y;
       double dx = (x2 - x1) / COEFF;
       double dy = (y2 - y1) / COEFF;


       for(int i = 0; i < COEFF; i++) {
           dgc = createVertex(msg + "", x, y, 30, 15,a4);
      
         
               y += dy;
        x += dx;
 
             _graph.getModel().insert(new Object[] {dgc}, null, null, null, null);
                   _graph.updateUI();
      delay(40);
                        _graph.getModel().remove(new Object[] {dgc});

       
       }

   }

    private void delay(long delay) {
       try {
          Thread.sleep(delay);
         
           //Thread.sleep(30,20);

       } catch (InterruptedException e) {

           e.printStackTrace();
       }
   }





--------------------
user posted image

PM MAIL WWW   Вверх
Su_
Дата 26.7.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



по идее в этом ошибка , если убрать insert и remove , то торомозов не наблюдается , т.е remove не убирает объекты из памяти , ?!  как явно удалять его ?


--------------------
user posted image

PM MAIL WWW   Вверх
dorogoyIV
Дата 26.7.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Su_ @  26.7.2008,  14:21 Найти цитируемый пост)
.remove(new Object[] {dgc}

вообще странность какая-то  smile 
PM MAIL   Вверх
Su_
Дата 26.7.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



т.е ? каждый раз создаеться новый обьект?


--------------------
user posted image

PM MAIL WWW   Вверх
Su_
Дата 26.7.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я вроде решил трабл , кроме remove объекта , я сделал :   dgc.removeAllChildren();  . и все ок ,  Спасибо всем.


--------------------
user posted image

PM MAIL WWW   Вверх
dorogoyIV
Дата 26.7.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



я тебе советую просто упростить свой код. убери все вычисления.
тогда сразу увидишь ошибку...
PM MAIL   Вверх
Su_
Дата 26.7.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да спасибо , я так делал ) только случайно стер, но подчерпнул в чем ошибка)


--------------------
user posted image

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

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

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


 




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


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

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