Hi Jie,
The runModelInThread() method adds a Manager to the workflow and
calls Manager.startRun() to execute the workflow in a new thread.
Since startRun() uses a new thread, you don't have to call
runModelInThread() in separate threads.
I noticed you are calling ExecutionEngine.runModel(), not
runModelInThread(). This method does not execute workflows in
a separate thread.
Both runModelInThread() and runModel() should behave the same regardless
of OS. Perhaps the workflows you are executing behave different on
Windows and Linux? It would help if you could share these workflows
in order to reproduce the problem.
--dan
On 12/4/14 4:46 PM, ZhangJie wrote:
Hi All,
I use the code of org/kepler/ExecutionEngine.java to run my Xml Kepler
Workflows. I executed lots of Workflows use the function of
runModelInThread() . I can get correct result in every thread of executions
when I run on windows machine. However I only get single correct result to
do this on Linux machine. In fact it couldn't run other workflow Threads. I
add sleep() between these parallel threads, I can get all the correct
executions again! Why? How can I run lots workflows without any wait? Is
there any advise from any one. More details about the runtime codes and
result are as follows:
Any help will be grately appriciated.
with regards,
Jie Zhang
import org.kepler.ExecutionEngine;
import ptolemy.actor.CompositeActor;
import Workflow.Kepler.KeplerL2OrderWorkFlowGenerator;
public class test extends Thread {
public String Id ;
private ExecutionEngine engine;
public test(String Id) {
this.Id=Id;
}
public void run() {
// 1.Generate Moml Kepler Workflow by my class
KeplerL2OrderWorkFlowGenerator kL2WFG = new
KeplerL2OrderWorkFlowGenerator(
this.Id);
String Moml=kL2WFG.KeplerWorkflow();
//2.Run Moml by Kepler ExecutionEngine
System.out.println("Begin to execute!")
engine = ExecutionEngine.getInstance();
try {
engine.runModel((CompositeActor)
ExecutionEngine.parseMoML(Moml));
} catch (Exception e) {
System.out.println("Error running model or
finding output file: "
+ e.getMessage());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 50; i++) {
test tempTest=new test("WorkFlow"+i);
tempTest.start();
//In Linux Mmachine,I have to add sleep()
//Thread.sleep(15000);
}
}
}
Result in Windows
Begin to execute!
Running model in new thread: L2CP201412040015KeplerWF
Running model in new thread: L2CP201412040004KeplerWF
Running model in new thread: L2CP201412040013KeplerWF
Running model in new thread: L2CP201412040012KeplerWF
Running model in new thread: L2CP201412040008KeplerWF
Running model in new thread: L2CP201412040001KeplerWF
Running model in new thread: L2CP201412040017KeplerWF
Running model in new thread: L2CP201412040007KeplerWF
Running model in new thread: L2CP201412040011KeplerWF
Running model in new thread: L2CP201412040003KeplerWF
Running model in new thread: L2CP201412040005KeplerWF
Running model in new thread: L2CP201412040002KeplerWF
Running model in new thread: L2CP201412040018KeplerWF
. . . .
Running model in new thread: L2CP201412040014KeplerWF
21737 ms. Memory: 418304K Free: 295512K (71%)
Execution finished successfully.
. . . .
23436 ms. Memory: 418304K Free: 294916K (71%)
Execution finished successfully.
Result in Linux without wait, only have one result
Begin to execute!
Running model in new thread: L2CP201412040014KeplerWF
21737 ms. Memory: 418304K Free: 295512K (71%)
Execution finished successfully.
_______________________________________________
Kepler-dev mailing list
[email protected]
http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
_______________________________________________
Kepler-dev mailing list
[email protected]
http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev