gpt4 book ai didi

Java - 将方法传递给类并在新线程中执行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:32 24 4
gpt4 key购买 nike

[检查问题底部的更新]

如标题所示,我想编写一个接受方法并在新线程中执行该方法的类。我潜伏在 SO 周围并想出了类似的东西:

import java.util.concurrent.Callable;

public class MyExecutor<T> implements Runnable{

private Callable<T> method;


public <T> MyExecutor(Callable<T> pMethod){
this.method = pMethod;
}

@Override
public void run() {
try {
// start a new Thread, then
method.call();
} catch (Exception e) {
System.err.println("Failed calling method "+method.getClass());
e.printStackTrace();
}

}

}

但是 Eclipse 警告我,在构造函数中,在

this.method = pMethod;

cannot convert from Callable <T> to Callable <T> .

我好像做错了什么,但我无法理解。

更新

原来我是在重新发明轮子,我想做的可以这样实现:

public class MyExecutor implements Executor{


@Override
public void execute(Runnable command) {
new Thread(command).start();
}

}

在主流程中,一个方法可以像这样在一个新线程中执行:

    MyExecutor myExec = new MyExecutor();

myExec.execute(new Runnable() {

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

最佳答案

因为你添加了一个类型参数 <T>对于您的构造函数,它隐藏了类的类型参数。因此,T对于构造函数参数 pMethod是不同的T而不是类参数,这是 Eclipse 警告您的内容。只需将构造函数的签名更改为 public MyExecutor(...) .

关于Java - 将方法传递给类并在新线程中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38848732/

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