import lombok.Data;
@Data
public class Student {
private int code;
private String name;
private String address;
}
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveTask;
import java.util.concurrent.TimeUnit;
public class ceshi {
static class RecursiveTaskA extends RecursiveTask<String> {
Student stu;
public RecursiveTaskA(Student stu) {
this.stu = stu;
}
@Override
protected String compute() {
try {
stu.setCode(77);
TimeUnit.SECONDS.sleep(3);
System.out.println(Thread.currentThread().getName() + ":学生信息:" + stu);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "A";
}
}
static class RecursiveTaskB extends RecursiveTask<String> {
Student stu;
public RecursiveTaskB(Student stu) {
this.stu = stu;
}
@Override
protected String compute() {
try {
TimeUnit.SECONDS.sleep(50);
stu.setName("杨欢");
System.out.println(Thread.currentThread().getName() + ":学生信息:" + stu);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "B";
}
}
public static void main(String[] args) {
Student stu = new Student();
stu.setAddress("千水");
ForkJoinPool forkJoinPool = new ForkJoinPool(2);
ForkJoinTask<String> futureTaskA = forkJoinPool.submit(new RecursiveTaskA(stu));
ForkJoinTask<String> futureTaskB = forkJoinPool.submit(new RecursiveTaskB(stu));
futureTaskA.join();
futureTaskB.join();
System.out.println(System.currentTimeMillis() + ":student=" + stu);
}
}
使用RecursiveTask执行多个任务_绅士jiejie的博客-优快云博客