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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается запустить несколько потоков 
:(
    Опции темы
Samuil
  Дата 30.7.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



Возникла ужасная проблемма smile  Не могу запустить несколько потоков, если надо выложу код, Один поток отвечает за изменение цвета а другой за движение, Почему не получается? 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
powerOn
Дата 30.7.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(Samuil @  30.7.2006,  18:45 Найти цитируемый пост)
Почему не получается?

Потому что ты что-то не так делаешь. Выкладывай код, телепатов здесь мало.
  

Это сообщение отредактировал(а) MoonCat - 30.7.2006, 18:09


--------------------
user posted image нет времени думать - нужно писать КОД!

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


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



Цитата

Выкладывай код, телепатов здесь мало.

А кого из них можете посоветовать? smile 
А вот и код:
Код

     public void run() {
            while (openThread == true) {
                System.out.println(color);
               try {
                    Thread.sleep(500);
                    if (color == true) {
                        color = false;
                    } else {
                        color = true;
                    }
                    repaint();
                } catch (Exception e) {}
            }
            while (true) {
                try {
                    Thread.sleep(200);
                    if (!stop) {

                        if (storona == 1) {
                            if (x > -width + we) {
                                x -= 5;
                            }
                        } else if (storona == 2) {
                            if (x < 0) {
                                x += 5;
                            }
                        } else if (storona == 3) {
                            if (y > -height + he) {
                                y -= 5;
                            }
                        } else if (storona == 4) {
                            if (y < 0) {
                                y += 5;
                            }
                        }
                        repaint();
                    }
                } catch (InterruptedException ex) {}
            }

        }
 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
02077461
Дата 31.7.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пре: японская фирма выпустила процессор, считающий бесконечный цикл за ~8 секунд.
Ну, во первых ты это не сможешь даже откомпилить. 
Цитата(Samuil @  30.7.2006,  23:28 Найти цитируемый пост)
while (true) {
 Сразу выдаст тебе варнинг. Тебе нужно, что бы потоки исполнялись параллельно. Так почему ты заставляешь их работать последовательно?..
Тебе надо создать два объекта. Можно конечно и один универсальный, который будет создаваться с ключем указывающим, как именно ему работать. Но у тебя в коде этого не наблюдаеться. У тебя запускаеться один бесконечный цикл, а следом за ним другой. И как же ты хочешь, что бы они работали одновременно?

Добавлено @ 08:20 
Вкратце: разнеси циклы по разным объектам. 
PM   Вверх
powerOn
Дата 31.7.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Еще было бы неплохо предусмотреть механизм остановки потока. Поток с бесконечным циклом - это некрасиво. 


--------------------
user posted image нет времени думать - нужно писать КОД!

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


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

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



Ок Спасибо а как сделать чтобы потоки запускались одновременно(параллельно)? 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
powerOn
Дата 31.7.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Это уже обсуждалось в общих вопросах. 
На однопроцессорных (или одноядерных) машина потоки всегда выполняются поочереди.  И запустить их паралельно не возможно.

Код

new Thread(myThreadObject1).start(); // вернет управления стразу. Возможно поток еще  запущен.
new Thread(myThreadObject2).start(); // вернет управления стразу. Возможно поток еще  запущен.


За запуск потоков и их планирование отвечает операционная система. Нет никакой гарантии, что поток 1 будет запущен быстрее потока 2, поэтому это максимально приближенный к параллельному запуску вариант.

 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




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


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

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