【发布时间】:2017-08-21 20:40:25
【问题描述】:
我正在寻找如何在 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();
}
}
}
【问题讨论】:
-
要传递一个方法,你需要java 8,它还没有在Android上可用。声明一个具有所需方法的类,并将该类的实例作为参数传递。然后调用那个方法。
标签: java android multithreading methods parameters