本文整理汇总了Java中com.esotericsoftware.kryo.pool.KryoCallback类的典型用法代码示例。如果您正苦于以下问题:Java KryoCallback类的具体用法?Java KryoCallback怎么用?Java KryoCallback使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
KryoCallback类属于com.esotericsoftware.kryo.pool包,在下文中一共展示了KryoCallback类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: run
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
@Override
public <T> T run(KryoCallback<T> callback) {
Kryo kryo = this.borrowOne();
T t;
try {
t = callback.execute(kryo);
} finally {
this.returnOne(kryo);
}
return t;
}
示例2: run
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
@Override
public <T> T run(KryoCallback<T> callback) {
Kryo kryo = null;
try {
kryo = kryoPool.borrowObject();
return callback.execute(kryo);
} catch (Exception e) {
fkcExceptionHandler.dealException(e);
return null;
} finally {
if (kryo != null) {
kryoPool.returnObject(kryo);
}
}
}
示例3: serialize
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
@Override
public <T> byte[] serialize(T obj) {
return getPool().run(new KryoCallback<byte[]>() {
@Override
public byte[] execute(Kryo kryo) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Output output = new Output(baos);
kryo.writeClassAndObject(output, obj);
output.close();
return baos.toByteArray();
}
});
}
示例4: deserialize
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
@Override
public <T> T deserialize(byte[] serObj, Class<T> clazz) {
return getPool().run(new KryoCallback<T>() {
@Override
public T execute(Kryo kryo) {
ByteArrayInputStream bais = new ByteArrayInputStream(serObj);
Input input = new Input(bais);
return clazz.cast(kryo.readClassAndObject(input));
}
});
}
示例5: toByteArrayKryo
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
/**
* Serialize an object to byte array, with a custom class loader.
*
* <p>
* This method uses Kryo lib.
* </p>
*
* @param obj
* @param classLoader
* @return
*/
public static byte[] toByteArrayKryo(final Object obj, final ClassLoader classLoader) {
if (obj == null) {
return null;
}
return kryoPool.run(new KryoCallback<byte[]>() {
@Override
public byte[] execute(Kryo kryo) {
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
Thread.currentThread().setContextClassLoader(classLoader);
}
try {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
try (Output output = new Output(baos)) {
kryo.setClassLoader(classLoader != null ? classLoader : oldClassLoader);
// kryo.writeObject(output, obj);
kryo.writeClassAndObject(output, obj);
output.flush();
return baos.toByteArray();
}
} catch (Exception e) {
throw e instanceof SerializationException ? (SerializationException) e
: new SerializationException(e);
}
} finally {
Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
});
}
示例6: fromByteArrayKryo
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
/**
* Deserialize a byte array back to an object, with custom class loader.
*
* <p>
* This method uses Kryo lib.
* </p>
*
* @param data
* @param clazz
* @param classLoader
* @return
*/
public static <T> T fromByteArrayKryo(byte[] data, final Class<T> clazz,
final ClassLoader classLoader) {
if (data == null) {
return null;
}
return kryoPool.run(new KryoCallback<T>() {
@SuppressWarnings("unchecked")
@Override
public T execute(Kryo kryo) {
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
Thread.currentThread().setContextClassLoader(classLoader);
}
try {
try (Input input = new Input(new ByteArrayInputStream(data))) {
kryo.setClassLoader(classLoader != null ? classLoader : oldClassLoader);
// return kryo.readObject(input, clazz);
Object result = kryo.readClassAndObject(input);
if (result != null && clazz.isAssignableFrom(result.getClass())) {
return (T) result;
} else {
return null;
}
} catch (Exception e) {
throw e instanceof DeserializationException ? (DeserializationException) e
: new DeserializationException(e);
}
} finally {
Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
});
}
示例7: run
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
@Override
public <T> T run(KryoCallback<T> callback) {
return pool.run(callback);
}
示例8: run
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
@Override
public <T> T run(KryoCallback<T> callback) {
return pool.run(callback);
}
示例9: run
import com.esotericsoftware.kryo.pool.KryoCallback; //导入依赖的package包/类
/**
* 从pool中获取一个kryo后马上执行callback
*
* @param callback callback
* @param <T>
* @return 返回值
*/
<T> T run(KryoCallback<T> callback);