我正在寻找如何在Java中将方法作为参数传递。我发现的每一种方法都不适合我的问题。我正在做一个Android图像处理应用程序,我想让每个处理算法都在一个线程中运行。
问题是我找到的每一种方法(lambda,Callable)都不起作用。这是我的ImageProcessing类,因此您可以看到不同的原型。
public class ImgProcessing {
private static Img image;
public static void colorize(int chosencolor) {
//Stuff
}
public static void histogramEqualization() {
//stuff
}
public static void extendDynamism() {
//stuff
}
public static void toGray() {
//stuff
}
public static void convolution(int n, int typeFilter) {
//stuff
}
private static void calculConvolution(float[][] filtermatrix, int sizefilter) {
//stuff
}
public static void overexposure() {}
public static void isolate(int colorValue) {
}
public static void sepia() {
}
}
这里的目标是将许多部分的像素阵列切割为处理器核心,并创建一个处理阵列一部分的线程。 我试图避免代码重复,所以我想要一个通用的Thread方法,我通过我的处理方法。
类似的东西:
public class Worker implements Runnable {
private final int numberOfIterations;
private final float[] x = new float[12000];
Func myFunc;
public Worker(int numberOfIterations, Func myFunc) {
this.numberOfIterations = numberOfIterations;
this.myFunc = myFunc;
}
public void run() {
}
public void initThread{
// *** Main Thread ***
Thread[] threads = new Thread[8];
for (int i = 0; i < 8; i++) {
//Creating threads and calling myFunc method.
}
for (int i = 0; i < 8; i++) {
threads[i].join();
}
}
}
答案 0 :(得分:1)
我想您应该考虑使用方法ImageProcessing
创建类似process
的接口类。将方法创建为继承ImageProcessing
的类。因此myFunc
将是ImageProcessing
类,您可以将其作为所需的类传递。