/**
*
*/
package com.alibaba.doris.dataserver.migrator.task;
import java.lang.reflect.Field;
import java.util.concurrent.ThreadFactory;
/**
* @author raymond
*
*/
public class MigrationThreadFactory implements ThreadFactory {
/**
* @see java.util.concurrent.ThreadFactory#newThread(java.lang.Runnable)
*/
public Thread newThread(Runnable r) {
try {
Field[] fields = r.getClass().getDeclaredFields();
Field firstTaskField = null;
for (Field field : fields) {
if( field.getName().equals("firstTask")) {
firstTaskField = field;
break;
}
}
firstTaskField.setAccessible(true);
BaseMigrationTask task = (BaseMigrationTask) firstTaskField.get( r );
String taskName = task.getName();
Thread thread = new Thread( r , taskName);
return thread;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}