当前位置: 首页 > 知识库问答 >
问题:

将方法(或空)传递给Java ArrayList

曹臻
2023-03-14

package asWebRest.shared;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class ThreadRipper {

    private int maxThreads = 4;
    private int maxThreadsHost = 8;


    public void runProcess(String pString) {
        System.out.println(" --> Running [ "+pString+" ]");
        String s = null;
        String[] pArray = { "bash", "-c", pString };
        try { 
            Process p = new ProcessBuilder(pArray).start();
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
            BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
            while ((s = stdInput.readLine()) != null) { System.out.println(s); }
            while ((s = stdError.readLine()) != null) { System.out.println(s); }
            p.destroy();
        }
        catch (IOException e) { e.printStackTrace(); }
        System.out.flush();
    }

    public String runProcesses() {

        boolean pool = false;
        WebCommon wc = new WebCommon();
        ArrayList<Object> threadList = new ArrayList<Object>();
        threadList.add(runProcess("ls -l"));
        threadList.add(runProcess("ls -s"));
        threadList.add(runProcess("ls -al"));

        String runResults = "";
        int procLoop = 0;
        int inPool = 0;

        for(int i = 0; i < threadList.size(); i++) {            
            Object exTask = threadList.get(i);  
            if(!pool) {
                if(inPool < maxThreads) {
                    runResults += "Loop [" + procLoop + "] Thread [" + inPool + "]: " + exTask + "\n";
                    inPool++;
                } else {
                    procLoop++;
                    inPool = 0;
                }
            } else {
                runResults += "Pool Thread [" + inPool + "]: " + exTask + "\n";
                inPool++;
            }       
        }

        return runResults;

    }

    public int getMaxThreads() { return maxThreads; }
    public int getMaxThreadsHost() { return maxThreadsHost; }

}

共有1个答案

闾丘京
2023-03-14

您所做的是添加runprocess(“ls-l”)的返回,而不是引用runprocess,并且由于runprocess不返回任何内容,Java显示一个错误,您不能将void添加到列表中。

您需要使用runnable的列表。

list processes=new ArrayList ();

以这种方式将其添加到列表中,

processes.add(()->runprocess(“ls-l”));

然后您可以使用进程列表执行您选择的任何操作,

for(Runnable process : processes) { 
   process.run();// You can other fancy stuff here.
   new Thread(process).start(); // eg : spawn in new thread.
}
 类似资料:
  • 问题内容: 一个讨论是关于将空值传递给方法。 它代表了不同的处理方式: 我更喜欢断言方法,但是我不喜欢断言默认情况下处于关闭状态的事实。 该书最后指出: 在大多数编程语言中,没有很好的方法来处理调用者意外传递的null。因为是这种情况,所以合理的方法是默认情况下禁止传递null。 它实际上并没有涉及如何实施此限制? 无论哪种方式,您中的任何人都有强烈的意见。 问题答案: 在这里,使用断言和引发异常

  • 问题内容: 如何将整个数组传递给方法? 如何正确执行此操作? 问题答案: 你做这个: 只需将其作为其他任何变量传递即可。 在Java中,数组是通过引用传递的。

  • 这是我的第一个Java应用程序。我正在尝试创建一个产品(键)和它们的价格(值)的地图。文档上说我不能用doubles换钱,所以我得用bigdecimal。我现在完全不知道如何在我的方法和地图中使用BigDecimal。 寄存器类: 主类:

  • 问题内容: 我很好奇Go中是否有可能。我有多种方法的类型。是否可以有一个函数,该函数需要一个方法参数,然后将其称为类型? 这是我想要的一个小例子: Go认为type 有一个称为的方法,而不是用传入的方法名称替换它。 问题答案: 是的,有可能。您有2(3)个选项: 规范:方法表达式 该表达式产生的功能与第一个参数等效,但具有一个显式接收器。它有签名。 在这里,方法接收器是显式的。您只需将方法名称(具

  • 我创建了一个web应用程序,它使用登录页面、servlet、托管bean和jsp页面。无论我做了什么尝试,我都无法让JSP页面显示servlet中的项名数组,这些项名是使用bean对象的arraylist获取的。我甚至尝试在servlet中创建一个bean对象,然后传递一个字符串变量。我试过同时使用会话和请求,但无法使其工作,下面是我的代码: servlet: JSP: ItemInventory

  • 问题内容: 我想阅读onClick事件值属性。但是当我单击它时,在控制台上会看到类似以下的内容: 我的代码正常工作。运行时,我可以在onClick事件中看到但无法获取它。 我的代码: 如何在React js中将值传递给事件? 问题答案: 简单的方法 使用箭头功能: 这将创建一个新的函数,以正确的参数进行调用。 更好的方法 将其提取到子组件中。在render调用中使用箭头函数的问题是,每次都会创建一