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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ожидание потоком 
:(
    Опции темы
DEER
Дата 14.10.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ТОварисчи!
Пусть задан класс типа такого
Код

 class foo
 {
    private int Size;
    private ArrayList List;
    //.....
    // конструктор ис инициализацией Size
    //.....
   private void putObject(Object o)
   {
      // тут его реализация 
   }
 }


необходима такая реализация метода putObject(Object o):
- метод будет вызываться из потока;
- если размер массива List равен Size, то поток должен ожидать пока размер массива List не уменьшиться
- если размер массива List меньше Size, то вклучить "o" в List
Иначе говоря чтобы размер массива не превышал Size.....
С потоками никогда раньше не сталкивался, объясните плиз, и если мона примерчик smile


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
pvo
Дата 14.10.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Лови пример.
Код

package threadTest;

import java.util.ArrayList;

public class Test {

    private int maxSize;
    private ArrayList list = new ArrayList();
    private Object syncObj = new Object(); // Объект для синхронизации методов putObject & getObject 
    
    
    //.....
    // конструктор ис инициализацией Size
    //.....
    public Test( int maxSize ) {
        this.maxSize = maxSize;
    }

    public boolean putObject(Object o) {
        synchronized ( syncObj ) {
            while ( list.size() > maxSize ) {
                try {
                    syncObj.wait(); // Если число элементов > maxSize - ждать
                } catch (InterruptedException e) {
                    System.out.println( "Interrupted. Object was not added." );
                    return false;
                }
            } // while
            return list.add( o );
        }
   }
    
    public Object getObject() {
        synchronized ( syncObj ) {
            if ( list.size() > 0 ) {
                Object result = list.get( 0 );
                list.remove( 0 );
                syncObj.notify(); // Сказать, что число элементов уменьшилось
                return result;
            } 
            throw new ArrayIndexOutOfBoundsException();
        }
    }

}



PS. И еще совет - Эккеля купи. Там все очень доходчиво написано smile

Это сообщение отредактировал(а) pvo - 14.10.2005, 17:45
PM MAIL ICQ   Вверх
DEER
Дата 19.10.2005, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо!

На выходных читал книжку, вроде разобрался, что да как


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

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

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


 




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


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

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