" pool.execute" Java 7中的(线程池执行器)用法

时间:2015-05-16 10:53:20

标签: java multithreading

我项目中的一些代码如下:

 pool.execute(() -> 
            {   
                boolean flag = true;
                while (flag)
                {
                    if (ev3ColorSensor.getColorID() == Color.BLACK)
                    {
                        LuuMa.setSwitching(true);
                        int randomInt = randomGenerator.nextInt(5) + 1;

                        if (randomInt == 1)
                        {
                            try {
                                pause();
                            } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                        else if (randomInt == 2)
                        {
                            fastOff();
                        }
                        else if (randomInt == 3)
                        {
                            intimidate();
                        }
                        else if (randomInt == 4)
                        {
                            try {
                                peekFastOff();
                            } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                        else if (randomInt == 5)
                        {
                            psych();
                        }
                        else if (randomInt == 6)
                        {
                            try {
                                delay();
                            } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    }

                    LuuMa.setSwitching(false);
                }
            });

我正在研究lejos ev3项目。并且Lejos ev3不支持Java 8.因此,我必须使用Java 7在ev3砖上编译我的项目。

我需要使用pool.execute进行并行处理。但Java 7并不支持它。如何解决问题,或者我可以在Java 7中使用哪种替代方案?

谢谢,

1 个答案:

答案 0 :(得分:3)

您可以使用匿名内部类 - Java 7不支持lambda表达式,但它肯定支持并行执行。

pool.execute(new Runnable() {
    @Override public void run() {
        // Code here
    }
});

显然,在这种情况下,将Callablerun更改为适当的接口和方法名称 - 我们不知道代码中pool的类型。如果Java 7中不支持pool的类型,则可以使用ExecutorService之类的内容。