我需要一个“接受参数的可运行对象”,尽管我知道这种可运行对象实际上并不存在。
这可能表明我的应用程序设计存在根本缺陷,并且/或者疲倦的大脑中存在智力障碍,因此我希望在这里找到一些建议,以在 不 违反基本OO原则的 情况下
实现以下目标:
private Runnable mOneShotTask = new Runnable(String str) {
public void run(String str) {
someFunc(str);
}
};
任何想法如何完成上述工作?
自从我最初发布此文章至今已经快9年了,说实话,Java从那时起取得了一些进步。我将原始答案留在下面,但无需人们去做。9年前,在代码审查期间,我会质疑他们为什么这样做,也许批准了,也许没有。有了可用的现代lambda,对这样一个经过高度投票的答案提出建议,采取不合时宜的做法是不负责任的(公平地说,这种做法一开始就令人怀疑…)在现代Java中,该代码审查将被立即拒绝,这将是建议:
void foo(final String str) {
Thread t = new Thread(() -> someFunc(str));
t.start();
}
像以前一样,诸如以有意义的方式处理该线程之类的细节留给读者练习。但坦率地说,如果您担心使用lambda,则应该更担心多线程系统。
原始答案,仅因为:
您可以在方法中声明一个类
void Foo(String str) {
class OneShotTask implements Runnable {
String str;
OneShotTask(String s) { str = s; }
public void run() {
someFunc(str);
}
}
Thread t = new Thread(new OneShotTask(str));
t.start();
}
我有以下结构: 机器1:Jenkins从机(Windows) 机器2:JMeter机器(Windows) 我想得到什么?机器1从Jenkins接收一些参数(用于JMeter测试)。 因此,性能.bat看起来像这样: 因此,基本上它会创建一个结果文件夹,然后导航到JMeter位置并尝试使用给定值运行性能测试。 问题。PSExec似乎没有按预期执行命令。通过CMD发送3个命令:为结果创建文件夹,导航到
问题内容: 标准接口只有非参数化方法。也有接口与泛型类型的方法返回结果。我需要传递通用参数,如下所示: 是否有用于此目的的标准接口,或者我必须自己声明该基本接口? 问题答案: 通常,您将实现或作为支持通用输入参数的类;例如
问题内容: 我的程序正在获取命令行参数。使用Ant时如何通过? 问题答案: 扩展了Richard Cook的答案。 这是运行任何程序(包括但不限于Java程序)的任务: 这是从文件运行Java程序的任务: 您可以像这样从命令行调用: 确保使用语法;如果运行此命令: 然后将尝试运行目标和。
问题内容: 我正在编写一个maven插件,该插件必须使用特定的VM参数来初始化另一个Java项目。根据exec:java的介绍,它们仅接受参数,而不接受VMarguments,因此我的问题是如何从命令行启动具有特定VMarguments的Java项目?谢谢 问题答案: 如果使用Maven的exec:java插件,则无法提供额外的VM参数,因为它在同一VM中运行(即,它已经被初始化)。您将需要使用e
运行参数 如果 qemu 使用的是默认 /usr/local/bin 安装路径,则在命令行中可以直接使用 qemu 命令运行程序。qemu 运行可以有多参数,格式如: qemu [options] [disk_image] 其中 disk_image 即硬盘镜像文件。 部分参数说明: `-hda file' `-hdb file' `-hdc file' `-hdd file'
问题内容: 为了使log4j正常运行,我必须设置/传递哪些变量作为JVM的参数?正确地说,我的意思是不要抱怨并打印到控制台。我可以看一个典型的例子吗? 注意:我需要避免在应用程序中创建log4j.properties文件。 问题答案: 您是否有一个log4j配置文件?只需使用 {文件路径}的前缀 编辑: 如果您正在使用log4j2,则需要使用