进程控制java代码 java实现进程调度

如何用java控制一个运行的程序使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序 。1. exec(String command) 2. exec(String command, String envp[], File dir) 3. exec(String cmd, String envp[]) 4. exec(String cmdarray[]) 5. exec(String cmdarray[], String envp[]) 6. exec(String cmdarray[], String envp[], File dir) 一般的应用程序可以直接使用第一版本 , 当有环境变量传递的时候使用后面的版本 。其中2和6版本可以传递一个目录,标识当前目录,因为有些程序是使用相对目录的,所以就要使用这个版本 。实例: Process process = Runtime.getRuntime().exec(".\\p.exe"); process.waitfor(); 在上面的程序中,第一行的“.\\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例 。通过Process可以控制该子进程的执行或获取该子进程的信息 。第二条语句的目的等待子进程完成再往下执行 。
如何在程序中控制java的单进程理论上一个进程运行结束后会自己销毁 , 除非病毒一般不会出现进程过多问题 。(自己写脚本无限开启某进程除外 = =)
一般来说我们都是控制自己这个进程下的线程是否超过一定数量,可以用线程池或者一个计数器控制线程数量 。
控制进程数量是操作系统的工作,我们不需要控制 。
VM只能控制当前VM下的线程数量及最大内存 , 不能控制进程数量啊 。
每个进程都有自己独立的VM 。
用java实现一个模拟操作系统内核运行的程序 。(1)进程控制:其中包括进程创建与撤销在编写Java程序时进程控制java代码 , 有时候需要在Java程序中执行另外一个程序 。
1、启动程序Java提供进程控制java代码了两种方法用来启动其它程序:
(1)使用Runtime进程控制java代码的exec()方法
(2)使用ProcessBuilder的start()方法
不管在哪种操作系统下进程控制java代码,程序具有基本类似的一些属性 。一个程序启动后就程序操作系统的一个进程 , 进程在执行的时候有自己的环境变量、有自己的工作目录 。Runtime和ProcessBuilder提供进程控制java代码了不同的方式来启动程序 , 设置启动参数、环境变量和工作目录 。
能够在Java中执行的外部程序,必须是一个实际存在的可执行文件,对于shell下的内嵌命令是不能直接执行的 。
采用Runtime的exec执行程序时,首先要使用Runtime的静态方法得到一个Runtime , 然后调用Runtime的exec方
法 。可以将要执行的外部程序和启动参数、环境变量、工作目录作为参数传递给exec方法,该方法执行后返回一个Process代表所执行的程序 。
Runtime有六个exec方法,其中两个的定义为:
public Process exec(String[] cmdarray,String[] envp, File dir)
public Process exec(String command,String[] envp ,  File dir)
cmdarray和command为要执行的命令,可以将命令和参数作为一个字符串command传递给exec()方法 , 也可以将命令和参数一个一个的方在数组cmdarray里传递给exec()方法 。
envp为环境变量,以name=value的形式放在数组中 。dir为工作目录 。
可以不要dir参数,或者不要envp和dir参数,这样就多出了其它4个exec()方法 。如果没有dir参数或者为null,那么新启动的
进程就继承当前java进程的工作目录 。如果没有envp参数或者为null,那么新启动的进程就继承当前java进程的环境变量 。
也可以使用ProcessBuilder类启动一个新的程序,该类是后来添加到JDK中的,而且被推荐使用 。通过构造函数设置要执行的命令以及

推荐阅读