Java 将方法调用放入ArrayList?
我在Java程序中添加了一个加载条功能,我想知道是否可以设置一个需要完成的进程列表,以便它知道需要完成多少进程 例如,是否将它们保存为字符串Java 将方法调用放入ArrayList?,java,arrays,methods,progress-bar,process,Java,Arrays,Methods,Progress Bar,Process,我在Java程序中添加了一个加载条功能,我想知道是否可以设置一个需要完成的进程列表,以便它知道需要完成多少进程 例如,是否将它们保存为字符串 ArrayList<String> processes = new ArrayList<String>(); processes.add("CSVWriter.createFileOfCompany(\"Random Company\");"); processes.add("FileConverter.convertCSVToXL
ArrayList<String> processes = new ArrayList<String>();
processes.add("CSVWriter.createFileOfCompany(\"Random Company\");");
processes.add("FileConverter.convertCSVToXLS(classPath +
\"/Output/Random_Company.csv\");");
for (int i = 0; i < processes.size(); i++) {
// run process
// update loading bar
}
ArrayList进程=新建ArrayList();
processs.add(“CSVWriter.createFileOfCompany(\“Random Company\”);”);
processs.add(“FileConverter.convertCSVToXLS(classPath+
\“/Output/Random_Company.csv\”;”;
for(int i=0;i
这些不是我的程序的真正方法,但它们与我想要实现的非常相似
我确信这不是最好的方法,但我想有一些方法来创建这样的列表,这样在运行它们之前我就知道有多少进程。我已经建立了一个系统来进一步分解这些进程并显示它们的进度,所以这个条目前非常精确,但我必须对每个进程进行编号=/
也许我没抓住重点。创建进度条对我来说是全新的
如果有任何关于进度条创建的好文章,也可以随意发送给我。请记住,我并没有使用真正的基于swing的GUI。此栏是所有S.O.P文本
非常感谢,
Justin Meyer闭包有望很快出现在下一版本的Java中,但在此之前,您可以使用匿名类实现已知接口:
List<Runnable> jobs = new ArrayList<Runnable>();
jobs.add(new Runnable() {
public void run() {
CSVWriter.createFileOfCompany("Random Company");
}
});
jobs.add(new Runnable() {
public void run() {
FileConverter.convertCSVToXLS(classPath + "/Output/Random_Company.csv");
}
});
for (Runnable job : jobs) {
job.run();
}
List jobs=new ArrayList();
jobs.add(新的Runnable(){
公开募捐{
CSVWriter.createFileOfCompany(“随机公司”);
}
});
jobs.add(新的Runnable(){
公开募捐{
convertCSVToXLS(classPath+“/Output/Random_Company.csv”);
}
});
for(可运行作业:作业){
job.run();
}
闭包有望很快出现在下一版本的Java中,但在此之前,您可以使用匿名类实现已知接口:
List<Runnable> jobs = new ArrayList<Runnable>();
jobs.add(new Runnable() {
public void run() {
CSVWriter.createFileOfCompany("Random Company");
}
});
jobs.add(new Runnable() {
public void run() {
FileConverter.convertCSVToXLS(classPath + "/Output/Random_Company.csv");
}
});
for (Runnable job : jobs) {
job.run();
}
List jobs=new ArrayList();
jobs.add(新的Runnable(){
公开募捐{
CSVWriter.createFileOfCompany(“随机公司”);
}
});
jobs.add(新的Runnable(){
公开募捐{
convertCSVToXLS(classPath+“/Output/Random_Company.csv”);
}
});
for(可运行作业:作业){
job.run();
}
我想到了一个方案:
interface WorkProcess
void setWorkUnits(int units)
void setArguments(Object obj1,...)
void execute()
因此,您将所有任务封装在一个界面中,该界面按照经典的命令模式执行execute
;它还告诉(见下文)这项工作可能需要多少工作量。您可能需要某种机制将数据传递到这些任务中,以便它们使用
class WorkProcessFactory
static WorkProcess makeWorkProcess()
static int getTotalWorkUnitsAllocated()
static synchronized int reportWorkDone(int units)
static void addProgressListener(ProgressListener xxx)
当你有工作要做的时候,你要求工厂为你大量生产这些过程中的一种。在此过程中,它对工作单元进行估计,并将其传递给刚刚创建的工作流程。它还记录了这些单位的总数,以设置进度指标的顶部。这样做的一个很酷的副作用是,您不必等待所有作业准备就绪:您可以在每次添加作业时增加进度报告的最大值,即使作业正在处理和新建;你的酒吧将始终显示一个现实的比例
您可以将工作进程塞入某种队列中<如果您的工作流程还实现了Runnable
接口(这是一个好主意),则会想到code>ExecutorService。无论执行队列机制支持什么,您都可以通过单个文件或并发顺序处理这些作业
WorkProcess“execute()
方法基本上包装了run()
方法(或者反过来,因为executeService需要run()方法,但我们的工作单元魔法在于execute()
);但当这一切完成后,它会认真地回拨到reportworkone
,告知它的工作价值的单位数量。在收到这些报告后,工厂有一个已完成工作单位的更新值,它可以将该值报告给监听进程侦听器。这反过来会更新GUI中的栏
完成了。(我想)。可能需要一些改进。我刚想到一个方案:
interface WorkProcess
void setWorkUnits(int units)
void setArguments(Object obj1,...)
void execute()
因此,您将所有任务封装在一个界面中,该界面按照经典的命令模式执行execute
;它还告诉(见下文)这项工作可能需要多少工作量。您可能需要某种机制将数据传递到这些任务中,以便它们使用
class WorkProcessFactory
static WorkProcess makeWorkProcess()
static int getTotalWorkUnitsAllocated()
static synchronized int reportWorkDone(int units)
static void addProgressListener(ProgressListener xxx)
当你有工作要做的时候,你要求工厂为你大量生产这些过程中的一种。在此过程中,它对工作单元进行估计,并将其传递给刚刚创建的工作流程。它还记录了这些单位的总数,以设置进度指标的顶部。这样做的一个很酷的副作用是,您不必等待所有作业准备就绪:您可以在每次添加作业时增加进度报告的最大值,即使作业正在处理和新建;你的酒吧将始终显示一个现实的比例
您可以将工作进程塞入某种队列中<如果您的工作流程还实现了Runnable
接口(这是一个好主意),则会想到code>ExecutorService。无论执行队列机制支持什么,您都可以通过单个文件或并发顺序处理这些作业
WorkProcess“execute()
方法基本上包装了run()
方法(或者反过来,因为executeService需要run()方法,但我们的工作单元魔法在于execute()
);但当这一切完成后,它会认真地回拨到reportworkone
,告知它的工作价值的单位数量。在收到这些报告后,工厂有一个已完成工作单位的更新值,它可以将该值报告给监听进程侦听器。反过来,upda