001
014
015 package com.liferay.portal.kernel.test;
016
017 import com.liferay.portal.kernel.util.ReflectionUtil;
018
019 import java.util.concurrent.Callable;
020 import java.util.concurrent.FutureTask;
021
022
025 public class SyncThrowableThread<V> extends Thread {
026
027 public SyncThrowableThread(Callable<V> callable) {
028 _futureTask = new FutureTask<>(callable);
029 }
030
031 @Override
032 public void run() {
033 _futureTask.run();
034 }
035
036 public V sync() {
037 try {
038 join();
039
040 return _futureTask.get();
041 }
042 catch (Throwable t) {
043 return ReflectionUtil.throwException(t);
044 }
045 }
046
047 private final FutureTask<V> _futureTask;
048
049 }