All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fasterxml.jackson.core.util.BufferRecyclers Maven / Gradle / Ivy

There is a newer version: 198
Show newest version
package com.fasterxml.jackson.core.util;

import java.lang.ref.SoftReference;

import com.fasterxml.jackson.core.io.JsonStringEncoder;

/**
 * Helper entity used to further 
 *
 * @since 2.9.2
 */
public class BufferRecyclers
{
    /*
    /**********************************************************
    /* BufferRecyclers for parsers, generators
    /**********************************************************
     */

    /**
     * This ThreadLocal contains a {@link java.lang.ref.SoftReference}
     * to a {@link BufferRecycler} used to provide a low-cost
     * buffer recycling between reader and writer instances.
     */
    final protected static ThreadLocal> _recyclerRef
        = new ThreadLocal>();

    public static BufferRecycler getBufferRecycler()
    {
        SoftReference ref = _recyclerRef.get();
        BufferRecycler br = (ref == null) ? null : ref.get();

        if (br == null) {
            br = new BufferRecycler();
            _recyclerRef.set(new SoftReference(br));
        }
        return br;
    }

    /*
    /**********************************************************
    /* JsonStringEncoder
    /**********************************************************
     */

    /**
     * This ThreadLocal contains a {@link java.lang.ref.SoftReference}
     * to a {@link BufferRecycler} used to provide a low-cost
     * buffer recycling between reader and writer instances.
     */
    final protected static ThreadLocal> _encoderRef
        = new ThreadLocal>();

    public static JsonStringEncoder getJsonStringEncoder() {
        SoftReference ref = _encoderRef.get();
        JsonStringEncoder enc = (ref == null) ? null : ref.get();

        if (enc == null) {
            enc = new JsonStringEncoder();
            _encoderRef.set(new SoftReference(enc));
        }
        return enc;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy