Scilab called within a Java thread
scheiber
scheiber at unitbv.ro
Fri May 6 20:08:41 CEST 2011
Hi,
My problem is the Scilab calling within a Java thread. The bellow example
works when the number of threads (noThreads) is 1 but increasing this
number it crashes.
import org.scilab.modules.javasci.Scilab;
import org.scilab.modules.types.ScilabType;
import org.scilab.modules.types.ScilabDouble;
import java.util.concurrent.*;
public class TestThreadScilab{
static Scilab sci;
static int noThreads=1;
public static void main(String... args){
try{
sci=new Scilab();
}
catch(org.scilab.modules.javasci.JavasciException e) {
System.err.println("An exception occured: " +
e.getLocalizedMessage());
System.exit(1);
}
ExecutorService executor=Executors.newFixedThreadPool(noThreads);
for(int i=0;i<noThreads;i++){
Fir fir=new Fir(i);
executor.execute(fir);
}
try{
executor.shutdown();
while(!executor.isTerminated());
sci.close();
}
catch(Exception e){}
System.out.println("Finished");
}
static class Fir extends Thread{
private int index;
Fir(int index){
this.index=index;
}
public void run(){
System.out.println("Thread "+index+" started");
try{
if(sci.open()){
double ind=index*1.0d;
ScilabDouble sci_ind=new ScilabDouble(ind);
sci.put("u",sci_ind);
sci.exec(new String[]{"v=u+10","disp(v)"});
ScilabDouble sci_v=(ScilabDouble)sci.get("v");
if(!sci_v.isEmpty()){
double[][] v=sci_v.getRealPart();
System.out.println("Index "+index+" : "+v[0][0]);
}
}
else{
System.out.println("Could not start Scilab ");
}
}
catch(org.scilab.modules.javasci.JavasciException e) {
System.err.println("An exception occured: " +
e.getLocalizedMessage());
}
}
}
}
--
View this message in context: http://mailinglists.scilab.org/Scilab-called-within-a-Java-thread-tp2909258p2909258.html
Sent from the Scilab users - Mailing Lists Archives mailing list archive at Nabble.com.
More information about the users
mailing list