gpt4 book ai didi

java - 如何在不同线程中执行接受同一类的可运行实例的两个方法?

转载 作者:行者123 更新时间:2023-12-01 17:20:44 26 4
gpt4 key购买 nike

class FooBar {
private int n;

public FooBar(int n) {
this.n = n;
}

public void foo(Runnable printFoo) throws InterruptedException {

for (int i = 0; i < n; i++) {

// printFoo.run() outputs "foo"
printFoo.run();
}
}

public void bar(Runnable printBar) throws InterruptedException {

for (int i = 0; i < n; i++) {

// printBar.run() outputs "bar"
printBar.run();
}
}
}

在上面的代码中,如何在 FooBar 类的同一实例上的不同线程中执行 foo 和 bar 方法?

这是 LeetCode 的一个问题。我很想知道它将如何进行测试。问题链接:https://leetcode.com/problems/print-foobar-alternately/

最佳答案

我在这里看到两个错误:

  1. 您不需要两种方法来完成完全相同的事情。
  2. 要使用 Runnable 启动线程,您无需调用 run 方法。

正确的做法是:

class FooBar {

public void executeRunnable(Runnable printFoo) throws InterruptedException {
// printFoo.run() outputs "foo"
new Thread(printFoo).start();
}


public static void main(String... args) {
FooBar fooBar = new FooBar();
fooBar.executeRunnable(new Runnable1());
fooBar.executeRunnable(new Runnable2());
}
}

假设 Runnable1 写入“foo”,Runnable2 写入“Bar”

关于java - 如何在不同线程中执行接受同一类的可运行实例的两个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61295187/

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