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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принцип многопоточности в Java 
V
    Опции темы
novichiok
Дата 16.9.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Не могу разъяснить для себя принцип организации и работы потоков в Java. Постараюь вкратце объяснить суть проблемы : 
Есть класс MyClass
Код

public MyClass {
public void method1(int n) {
      int c = method2(n);
      // Ещё что-то
}
public int method2(int n) {
// что-то делает
}
}

создаю единтсвенный инстанс этого класса под названием myObject.
Создаю Runnable в кторый передаю ссылку на мой объект и в run() выполняю следующие действия :
Код

public void run() {
while (true) {
  myobject .method2(someInt) ;
}
}

после чего запускаю несколько потоков с этим Runnable 
Обратите внимание что методы не синхронизированны, вообще ничего не синхронизированно
Первый поток заходит в метод1 и вычесляет С = С1, после чего вытеснятеся, после этого в метод1 заходит второй поток, считает С= С2 и вытесняется.
После этого просыпается первый поток и продолжает выполнение метода1, чему будет равно значение C для продолжающегося потока #1
PM MAIL   Вверх
Nofate
Дата 16.9.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



C1, я полагаю. int c не является переменной объекта. Она локальная и, следовательно,  для каждого вызова method1 будет свой экземпляр этой переменной. Вот если вы вынесете ее в качестве члена класса, тогда ответ будет С2.


--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
Farmazon
Дата 16.9.2011, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


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

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



я нефига не понял. Но посмотри ключевое слово volatile.

Добавлено через 1 минуту и 25 секунд
мало кода. Так выполнение предсказать полностью невозможно. 


--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
novichiok
Дата 16.9.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну фактически Nofate ответил на мой вопрос, спасибо
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.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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