小编hat*_*oor的帖子

为什么我无法在@Async 方法中取回结果?(“IllegalStateException:EntityManagerFactory 已关闭”被抛出)

我正在尝试编写一个简单的 Spring Boot 程序并练习 @Async。我想teacher异步获取实体的所有记录。

我的数据库访问对象:

public interface TeacherService {
    List<Teacher> findAll(Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)

它是如何实现的:

 public class TeacherServiceImpl implements TeacherService{
    
        @Autowired
        private TeacherRepository repository;
    
        @Override
        public List<Teacher> findAll(Pageable pageable) {
            Page<Teacher> page =  repository.findAll(pageable);
            return page.get().collect(Collectors.toList());
        }
}
Run Code Online (Sandbox Code Playgroud)

我的异步方法:

@Component
public class PrintAllTeacherDataBaseResult {
    @Autowired
    TeacherService teacher;

    @Async
    public AsyncResult<List<Teacher>> printPage(Pageable page){
        return new AsyncResult<>(teacher.findAll(page));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用printPage没有@Async注释的方法时,它工作正常。但是当我使用它时会抛出以下异常:

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:807) [spring-boot-2.4.2.jar:2.4.2]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:788) [spring-boot-2.4.2.jar:2.4.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) [spring-boot-2.4.2.jar:2.4.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) …
Run Code Online (Sandbox Code Playgroud)

java spring asynchronous

7
推荐指数
1
解决办法
535
查看次数

Spark 如何实现任务间的内存公平?

我正在观看有关火花内存管理的演示文稿

他谈到了他们如何在一个执行器中实现不同任务之间的公平性(12:00)。他提出了任务之间动态分配的想法,并宣称如果更多任务开始执行,Spark 会将其他任务的页面溢出到磁盘。

我之前读过 Spark 中的任务本质上是线程,而在 Java 中,我们没有这种能力来管理线程的内存并在它们之间建立内存公平性。我想知道 Spark 是如何实现这一目标的?

java multithreading memory-management apache-spark

6
推荐指数
1
解决办法
293
查看次数

具有递归类型参数的泛型类型以及抽象 self 方法如何允许方法链正常工作?

我正在阅读《Effective Java Edition 3》。在第 2 章第 14 页中,作者讨论了构建器模式并呈现了以下代码:

public abstract class Pizza {
    public enum Topping { HAM, MUSHROOM, ONION, PEPPER, SAUSAGE }
    final Set<Topping> toppings;
    abstract static class Builder<T extends Builder<T>> {
        EnumSet<Topping> toppings = EnumSet.noneOf(Topping.class);
        public T addTopping(Topping topping) {
            toppings.add(Objects.requireNonNull(topping));
            return self();
        }
        abstract Pizza build();
        // Subclasses must override this method to return "this"
        protected abstract T self();
    }
    Pizza(Builder<?> builder) {
        toppings = builder.toppings.clone(); // See Item 50
    }
}
Run Code Online (Sandbox Code Playgroud)

上述抽象类的实现:

public class …
Run Code Online (Sandbox Code Playgroud)

java generics design-patterns builder

2
推荐指数
1
解决办法
531
查看次数