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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В каком потоке будет исполняеться метод, Задумался о многопоточности 
V
    Опции темы
kaa
Дата 30.7.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть такой вопрос:
 - я создаю класс имплементирующий Runnable интерфейс с бесконечным циклом в методе run() и какими-то другими методами, принадлежащими классу;
 - я дергаю какой-либо метод у данного класса: в каком потоке будет исполняться этот метод? В потоке класса-хозяина или в том потоке, откуда его дёрнули?

Всю голову сломал, но вот переклинило меня и всё smile С потоками только пытаюсь начать работать smile

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


Эксперт
***


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

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



Не теми терминами мыслите, товарищ. У классов нет потоков. Поток - это беговая дорожка, в которой вас перебрасывает от операции к операции, классы лишь показывают адреса полей и методов в памяти. Т.е. следите какой поток зашел в функцию, в нем же и будет вызвана следующая функция.
Не забываем о хитрых случаях, когда можно напороться на ExecutorService и там уже задача будет передана другим потокам, а наш поток не дожидаясь исполнения задачи продолжит свой бег.

Это сообщение отредактировал(а) Platon - 30.7.2009, 14:11
PM MAIL ICQ   Вверх
kaa
Дата 30.7.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нет, я понимаю что классы это не потоки. смвой оборот я применил что бы выделить "мой" поток, который я сам реализую smile

Тоесть, как я понял, функция, вызванная из класса, из любого, даже реализующего Runnable интерфейс, будет выполняться в вызвавшем её потоке, так?

А что такое ExecutorService? Это я как понимаю и есть способ отдать выполнение задачи другому потоку? 
Если да, то в какую сторону гуглить?
Можно об этом чуточку поподробнее?

Спасибо!
PM MAIL   Вверх
Platon
Дата 30.7.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(kaa @  30.7.2009,  15:45 Найти цитируемый пост)
Тоесть, как я понял, функция, вызванная из класса, из любого, даже реализующего Runnable интерфейс, будет выполняться в вызвавшем её потоке, так?

Разумеется smile То, что класс реализует интерфейс Runnable, чести ему не прибавляет.

Цитата(kaa @  30.7.2009,  15:45 Найти цитируемый пост)
А что такое ExecutorService? Это я как понимаю и есть способ отдать выполнение задачи другому потоку? 

Да, это интерфейс из библиотеки для многопоточной работы java.util.concurrent 

Там даже пример есть.

Код

class NetworkService implements Runnable {
   private final ServerSocket serverSocket;
   private final ExecutorService pool;

   public NetworkService(int port, int poolSize)
       throws IOException {
     serverSocket = new ServerSocket(port);
     pool = Executors.newFixedThreadPool(poolSize);
   }

   public void run() { // run the service
     try {
       for (;;) {
         pool.execute(new Handler(serverSocket.accept()));
       }
     } catch (IOException ex) {
       pool.shutdown();
     }
   }
 }

 class Handler implements Runnable {
   private final Socket socket;
   Handler(Socket socket) { this.socket = socket; }
   public void run() {
     // read and service request on socket
   }
 }

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

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

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


 




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


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

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