1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Chris2018998-BeeOP

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение: BeeOP — небольшой пул объектов Java

BeeOP — это небольшой пул объектов Java.

Загрузка

Требуется Java 7 или выше.

<dependency>
   <groupId>com.github.chris2018998</groupId>
   <artifactId>beeop</artifactId>
   <version>1.2.8</version>
</dependency>

Производительность

Один миллион операций заимствования/возврата (1000 потоков x 1000 раз).

Тип пула commons-pool2-2.9.0 BeeOP-0.3_Fair BeeOP-0.3_Compete
Среднее время (мс) 2,677456 0,000347 0,000187

ПК: I5-4210M (2,6 Гц, двухъядерный, 4 потока), 12 ГБ памяти. Java: JAVA8_64. Пул: init-size10, max-size:10.

Файл журнала теста: https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/ObjectPool.log

Исходный код теста: https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/BeeOP_Test.rar

Пример

public interface Book {
    public String getName();
    public long getNumber();
}
public class JavaBook implements Book{
    private String name;
    private long number;
    public JavaBook() {
        this("Java核心技术·卷2", System.currentTimeMillis());
    }
    public JavaBook(String name, long number) {
        this.name = name;
        this.number = number;
    }
    public String getName() {
        return name;
    }
    public long getNumber() {
        return number;
    }
    public String toString() {
        return name;
    }
}
public class JavaBookFactory implements RawObjectFactory {
    public Object create() throws ObjectException {
        return new JavaBook("Java核心技术·卷1", System.currentTimeMillis());
    }
    public void setDefault(Object obj) throws ObjectException {
    }
    public void reset(Object obj) throws ObjectException {
    }
    public void destroy(Object obj) {
    }
    public boolean isValid(Object obj, int timeout) {
        return true;
    }
}
public class TestBookPool{
  public static void main(String[]){
      BeeObjectSourceConfig config = new BeeObjectSourceConfig();
      config.setObjectFactoryClass(JavaBookFactory.class);
      BeeObjectSource obs = new BeeObjectSource(config);
      
      BeeObjectHandle handle = null;
      try {
           handle = obs.getObject();
           Object v=handle.call("getName");
           System.out.println("Book name:"+v);
       } catch (BeeObjectException e) {
       } finally {
           if (handle != null)
               handle.close();
       }
    }
}

Особенности

1:Таймаут заимствования.

2:Режимы честного и конкурентного заимствования.

3:Безопасное закрытие прокси-объекта при возврате.

4:Очистка пула объектов при проблемах с сетью, воссоздание объектов при восстановлении сети.

5:Таймауты простоя и удержания (долгое неактивное удержание заёмщиком).

6:Закрытие пула объектов при возникновении исключения, создание нового объекта и передача его ожидающему.

7:Сброс пула объектов после возврата.

8:Возможность сброса пула.

9:Поддержка Jmx.

Конфигурация

Поле имени Описание Примечание
poolName имя пула имя генерируется автоматически, если не задано
fairMode логический индикатор для заимствования Параметр
---------------------------- ----------------------------------------------------------------------------- ----------------------
fair mode true: честный режим, false: соревновательный режим; по умолчанию — false false
initialSize размер создания объектов в пуле при инициализации пула 0
maxActive максимальный размер экземпляров объектов в пуле 10
borrowSemaphoreSize размер параллельных потоков для заимствования min(maxActive/2, cpu size)
maxWait максимальное время ожидания для заимствования одного экземпляра объекта 8000 ms
idleTimeout максимальное время простоя экземпляра объекта в пуле 18000 ms
holdTimeout максимально допустимое время удержания экземпляра объекта заёмщиком 300 000 ms
forceCloseUsingOnClear индикатор закрытия объекта при закрытии или сбросе пула false (ожидание возврата объекта), по умолчанию — false
delayTimeForNextClear время паузы перед очисткой, когда проверяемый объект используется если forceCloseObject == true
idleCheckTimeInterval интервал времени потока сканирования для проверки простаивающего объекта 300 000 ms
objectFactoryClassName имя класса фабрики объектов null
enableJmx индикатор JMX для пула false

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Компонент пула объектов Java небольшого размера. Развернуть Свернуть
Java
LGPL-2.1
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Chris2018998-BeeOP.git
git@api.gitlife.ru:oschina-mirror/Chris2018998-BeeOP.git
oschina-mirror
Chris2018998-BeeOP
Chris2018998-BeeOP
main