你好我有try catch结构,并希望在finally语句中使代码异步。我尝试将这部分放入lambda并转换为任务,将其放入ForkJoinPool,但是有类Cast Exception。如何更好地使这部分代码异步。我是否必须在字段之前使用原子或易失性?
public class Record {
private String actionDetails;
public void setActionDetails(String actionDetails) {
this.actionDetails = actionDetails;
}
}
public class Recorder {
private Record record;
public void record(Record record){
this.record = record;
}
}
public class Test {
private static Recorder recorder = new Recorder();
private static StringBuilder builder;
public static void main(String[] args) {
try {
// other code
builder.append("Test");
} finally {
Runnable runnable = () -> {
final Record record = new Record();
record.setActionDetails(builder.toString());
recorder.record(record);
};
ForkJoinTask<?> task = (ForkJoinTask<?>)runnable;
ForkJoinPool pool = new ForkJoinPool();
pool.invoke(task);
}
}
}
答案 0 :(得分:0)
我的意思是这样:
ForkJoinPool pool = new ForkJoinPool();
pool.submit(() -> {
final Record record = new Record();
record.setActionDetails(builder.toString());
recorder.record(record);
});
但是它需要在字段之前使用一些修饰符吗?