mirror of
https://gitee.com/jd-platform-opensource/asyncTool.git
synced 2026-03-22 12:27:15 +08:00
更新内容: 1.将WorkerWrapper执行结束由回调改成轮询,以防止线程耗尽bug。 2.修改线程编排模型,用策略器代替了僵硬的must开关与needCheckNextWrapperResult。 3.清理WorkerWrapper代码中的屎山。 4.以上魔改均兼容v1.4旧版本
50 lines
1.5 KiB
Java
Executable File
50 lines
1.5 KiB
Java
Executable File
package beforev14.parallel;
|
|
|
|
|
|
import com.jd.platform.async.callback.ICallback;
|
|
import com.jd.platform.async.callback.IWorker;
|
|
import com.jd.platform.async.executor.timer.SystemClock;
|
|
import com.jd.platform.async.worker.WorkResult;
|
|
import com.jd.platform.async.wrapper.WorkerWrapper;
|
|
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @author wuweifeng wrote on 2019-11-20.
|
|
*/
|
|
class ParWorker implements IWorker<String, String>, ICallback<String, String> {
|
|
|
|
@Override
|
|
public String action(String object, Map<String, WorkerWrapper> allWrappers) {
|
|
try {
|
|
Thread.sleep(1000);
|
|
} catch (InterruptedException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return "result = " + SystemClock.now() + "---param = " + object + " from 0";
|
|
}
|
|
|
|
|
|
@Override
|
|
public String defaultValue() {
|
|
return "worker0--default";
|
|
}
|
|
|
|
@Override
|
|
public void begin() {
|
|
//System.out.println(Thread.currentThread().getName() + "- start --" + System.currentTimeMillis());
|
|
}
|
|
|
|
@Override
|
|
public void result(boolean success, String param, WorkResult<String> workResult) {
|
|
if (success) {
|
|
System.out.println("callback worker0 success--" + SystemClock.now() + "----" + workResult.getResult()
|
|
+ "-threadName:" +Thread.currentThread().getName());
|
|
} else {
|
|
System.err.println("callback worker0 failure--" + SystemClock.now() + "----" + workResult.getResult()
|
|
+ "-threadName:" +Thread.currentThread().getName());
|
|
}
|
|
}
|
|
|
|
}
|