gpt4 book ai didi

java - 如何使接口(interface)实现可运行?

转载 作者:行者123 更新时间:2023-11-30 06:40:19 24 4
gpt4 key购买 nike

我正在尝试创建一个接口(interface),当实现该接口(interface)时,方法内的任何内容都将在单独的线程上持续执行。

希望这个描述有意义,这就是想法。

界面:

public interface Painting {

void onPaint();
}

主题:

public class Paintable implements Runnable, Painting {

@Override
public void run() {
onPaint();
}

@Override
public void onPaint() {
}
}

最后,目标是实现 Paint,这需要您实现并重写 onPaint 方法。然后,当执行该线程时,您决定在该方法中放入的任何内容都将在可绘制线程上运行。

public class Main implements Painting {

private static final ScheduledThreadPoolExecutor THREAD_POOL_EXECUTOR = new ScheduledThreadPoolExecutor(3);

public static void main(String[] args) {
THREAD_POOL_EXECUTOR.scheduleAtFixedRate(new Paintable(), 0, 100, TimeUnit.MILLISECONDS);

@Override
public void onPaint() {
System.out.println("This text should be continously printed, but is not.");
}
}

最佳答案

好的,现在您有一个 Paint 接口(interface),并且希望将其转换为调用 onPaint() 的 Runnable。

你可以这样做:

public class PaintingRunnable implements Runnable {
private final Painting painting;

public PaintingRunnable(Painting painting) {
this.painting = painting;
}

@Override
public void run() {
this.painting.onPaint();
}
}

因此,您可以使用以下命令从绘画中创建可运行的对象

Runnable runnableThatCallsOnPaint = new PaintingRunnable(somePainting);

但这太过分了,因为您可以使用 lambda 执行完全相同的操作,而无需任何类:

Runnable runnableThatCallsOnPaint = () -> somePaining.onPaint()

您甚至可以只使用方法引用:

Runnable runnableThatCallsOnPaint = somePaining::onPaint

关于java - 如何使接口(interface)实现可运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470062/

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