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; }
}
您所做的是添加runprocess(“ls-l”)
的返回,而不是引用runprocess
,并且由于runprocess
不返回任何内容,Java显示一个错误,您不能将void
添加到列表中。
您需要使用runnable
的列表。
list
以这种方式将其添加到列表中,
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调用中使用箭头函数的问题是,每次都会创建一