gpt4 book ai didi

java - 在线程中运行方法

转载 作者:行者123 更新时间:2023-12-02 04:07:59 26 4
gpt4 key购买 nike

我正在制作动画。我正在生成一堆图像,我想将它们添加到 gif 编码器中。由于添加过程可能需要相当长的时间,因此我希望在单独的线程中完成此操作。我的想法是这样做:

public class MyThread implements Runnable {

private AnimatedGifEncoder encoder = new AnimatedGifEncoder();

public void run() {
encoder.start("MyFile.gif");
}

public void addFrame(BufferedImage img) {
encoder.add(img);
}

}

然后,每次需要添加框架时,我都会从主类调用 addFrame() 方法。然而,当我再想一想时,我得出的结论是,事情并不是这样的。

另一个想法是每次添加帧时创建一个新的线程对象:

public class MyMainClass {
while (generating) {
BufferedImage img = generateImg();

new Thread(() -> {
encoder.addFrame(img);
}).start();
}
}

但是,对我来说,这似乎是一种非常沉重的方法。

我的问题:实现这一目标的更好方法是什么?如果没有,创建一个新的 Thread 对象的想法真的那么沉重吗?

最佳答案

您可以使用 ExecutorService

ExecutorService es = Executors.newSingleThreadExecutor();

es.submit(() -> encoder.start("MyFile.gif"));

es.submit(() -> encoder.addFrame(img));

关于java - 在线程中运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34074084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com