public void release(Pool<ByteArraySupplier> pool) { if (!used) return; pool.release(this); used = false; } }
public static PooledReadableByteArray get() { return pool.holder().get(); } }
@Override public T get() { return pool.reset(value); }
@Override public void run() { Integer value = pool.provide(new Pool.UnsafeMapper<Integer, Integer>() { @Override public Integer map(Integer integer) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } return integer; } }); Assert.assertEquals(1, value.intValue()); } }).start();
Assert.assertEquals(1, pool.get().intValue()); time = System.currentTimeMillis() - time; Assert.assertTrue(time >= 100);
@Test public void test_initSize() { final AtomicInteger counter = new AtomicInteger(); Pool<Integer> pool = new PoolBuilder<Integer>() .supplier(new Supplier<Integer>() { @Override public Integer supply() { return counter.incrementAndGet(); } }) .queue(PoolBuilder.<Integer>createSharedQueueSupplier()) .initialSize(1) .build(); Assert.assertEquals(1, pool.size()); Assert.assertEquals(1, counter.get()); }
public static <R> R withBuilder(Mapper<ExceptionDrivenStringBuilder, R> consumer) { Holder<ExceptionDrivenStringBuilder> holder = ExceptionDrivenStringBuilder.SHARED_POOL.holder(); try { ExceptionDrivenStringBuilder builder = holder.get(); return consumer.map(builder); } finally { holder.close(); } }
@Override public T get() { return pool.reset(value); }
@Override public boolean filter(Request request, Response response) { if (response.header(Header.KEY_CONTENT_ENCODING) != null) return true; if (response.header(Header.KV_CONTENT_ENCODING_GZIP) != null) return true; if (response.contentLength() == 0) return true; return buffers.provide(out -> { GZIPOutputStream gout = new GZIPOutputStream(out, compressionLevel); gout.write(response.getBody()); gout.close(); response.setBody(out.toByteArray()); response.appendHeader(Header.KV_CONTENT_ENCODING_GZIP); return true; }); }
Assert.assertEquals(1, pool.get().intValue()); time = System.currentTimeMillis() - time; Assert.assertTrue(time >= 100);
@Override public void close() { pool.release(this); } }
@Override public void run() { Holder<Integer> holder = pool.holder(); Integer value = 0; try { value = holder.get(); Thread.sleep(100); } catch (Exception ignored) { } finally { holder.close(); } Assert.assertEquals(1, value.intValue()); } }).start();
BUILDER_POOL.provide(requestBuilder -> { requestBuilder.append(request.method().name()) .append(" ").append(sb -> rewritePath(sb, request.path(), request.getQueryString()))
ByteArrayHolder byteArraySupplier = (ByteArrayHolder) webSocketHandler.byteArrayHolderPool.get(); byteArraySupplier.used = true; frame.setByteArraySupplier(byteArraySupplier); } else if (frame.getByteArraySupplier() == null) { ByteArrayHolder byteArraySupplier = (ByteArrayHolder) webSocketHandler.byteArrayHolderPool.get(); byteArraySupplier.used = true; frame.setByteArraySupplier(byteArraySupplier);
@Override public void close() { pool.release(this); } }
@Override public void close() { pool.release(this); } }
@Override public void close() { pool.release(this); } }