### Question:
ByteBufferCollector implements Recyclable { public static ByteBufferCollector allocateByRecyclers(final int size) { final ByteBufferCollector collector = recyclers.get(); collector.reset(size); return collector; } private  ByteBufferCollector(final int size, final Recyclers.Handle handle); int capacity(); void expandIfNecessary(); void expandAtMost(final int atMostBytes); boolean hasRemaining(); static ByteBufferCollector allocate(final int size); static ByteBufferCollector allocate(); static ByteBufferCollector allocateByRecyclers(final int size); static ByteBufferCollector allocateByRecyclers(); static int threadLocalCapacity(); static int threadLocalSize(); void put(final ByteBuffer buf); void put(final byte[] bs); void setBuffer(final ByteBuffer buffer); ByteBuffer getBuffer(); @Override boolean recycle();  }### Answer:
@Test public void testMultipleRecycleAtDifferentThread() throws InterruptedException { final ByteBufferCollector object = ByteBufferCollector.allocateByRecyclers(); final Thread thread1 = new Thread(object::recycle); thread1.start(); thread1.join(); assertSame(object, ByteBufferCollector.allocateByRecyclers()); }