Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过JButton操作侦听器并行运行的多个perl脚本实例_Java_Multithreading_Perl - Fatal编程技术网

Java 通过JButton操作侦听器并行运行的多个perl脚本实例

Java 通过JButton操作侦听器并行运行的多个perl脚本实例,java,multithreading,perl,Java,Multithreading,Perl,我通过“Runtime.getRuntime().exec(“Perl C:/script.pl”)” 作为Jbutton操作侦听器的一部分。我希望能够单击按钮两次,并运行相同Perl脚本的两个实例。脚本正在读取文本文件,因此它在第二次启动时的行为会根据文本文件的不同而有所不同,但通常脚本也会执行相同的操作 我试图通过将运行时命令包装到一个新线程中,并在每次按下按钮时对其执行“.run()”,来解决这个问题,但这似乎只会中断第一个实例并启动新的实例。似乎没有办法并行执行两个相同的Perl脚本。关

我通过
“Runtime.getRuntime().exec(“Perl C:/script.pl”)”

作为Jbutton操作侦听器的一部分。我希望能够单击按钮两次,并运行相同Perl脚本的两个实例。脚本正在读取文本文件,因此它在第二次启动时的行为会根据文本文件的不同而有所不同,但通常脚本也会执行相同的操作

我试图通过将运行时命令包装到一个新线程中,并在每次按下按钮时对其执行
“.run()”
,来解决这个问题,但这似乎只会中断第一个实例并启动新的实例。似乎没有办法并行执行两个相同的Perl脚本。关于我如何做到这一点有什么想法吗

ActionListener edit = new ActionListener() {

   public void actionPerformed(ActionEvent actionEvent) {

      class GetThread implements Runnable {

        public void run() {
          try {
            Runtime.getRuntime().exec("C:/Perl/bin/perl5.16.3.exe C:/Perl/get.pl", null, new File("C:/Perl"));
          } catch (IOException e1) {
            exceptionLog(e1);
          }
        }
      }
   GetThread get = new GetThread();
   get.run();
   }
}

每个Java应用程序都有一个类运行时实例,该实例允许应用程序与运行应用程序的环境交互。当前运行时可以从getRuntime方法获得


它可能会阻塞您的呼叫。

显示代码,请阅读操作侦听器的代码,不确定这是您想要看到的还是其他内容,如果是,请告诉我,谢谢。这很有意义,因为我的应用程序有几个按钮,它们都启动不同的perl脚本(在不同的线程中)但是所有这些都访问相同的运行时环境,因此不允许我单击其中两个按钮并获得所需的功能。你知道我怎样才能让它这样工作吗?使用process builder会有帮助吗?我不知道您是否可以对这些调用进行后台处理?然后不会有一个块,但是会有严重的反响,比如太多的分叉进程,而不知道它们结束。谢谢,我可能应该使用它,因为我在应用程序的其他地方使用了一些后台进程。我正在执行的Perl脚本只持续大约一分钟,不做任何繁重的工作,并且我对它们何时完成并不特别感兴趣,只要它们运行并且不互相中断就可以了。再次感谢。