将方法作为参数传递给JAVA

时间:2017-03-28 16:40:36

标签: java android multithreading methods parameters

我正在寻找如何在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();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我想您应该考虑使用方法ImageProcessing创建类似process的接口类。将方法创建为继承ImageProcessing的类。因此myFunc将是ImageProcessing类,您可以将其作为所需的类传递。