process

创建 Process的方法
1.Runtime.getRuntime().exec()
这个方法 中其实也是调用的ProcessBuilder中的start()方法
2.ProcessBuilder的start方法,
这个方法是调用了java.long包中的ProcessImpl类中的start()方法 这个类的修饰符是默认的 只能在本包中访问

Process 中的 waitFor() 等进程执行完 才会向后执行 是一个阻塞的方法

Process在不同场景下有不同含义和用途,以下是一些相关信息: ### 在Java编程场景 Process类是非常有用的类,ProcessBuilder.start() 和 Runtime.exec 方法能创建一个本机进程,并返回 Process 子类的一个实例,该实例可用来控制进程并获取相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法 [^2]。而且虽然 Process 新开了一个进程,但代码不会等待其进程执行,会直接往下执行,代码执行完毕之后,Java 程序结束,Process 对象消失,而 Process 对应的进程可能关闭也可能开启,这取决于进程开启速度和 Java 程序退出速度的快慢 [^1]。 ### 在 Python 编程场景 在 Python 的 `multiprocessing` 模块中也有 Process 类,可用于创建子进程。例如可以通过函数式方式创建子进程,创建时可指定 `target` 参数来指定子进程要执行的函数,使用 `start()` 方法启动子进程。若创建对象时没有给定 `target` 参数,会调用执行 Process 类中 `run` 方法;若指定了 `target` 参数,`start()` 会调用 `target` 指定的函数去执行 [^4]。示例代码如下: ```python from multiprocessing import Process import os, time # 函数式方式创建子进程 def sub_process(name): print(f'子进程PID:{os.getpid()},父进程的PID:{os.getppid()},--------{name}') time.sleep(1) def sub_process2(name): print(f'子进程PID:{os.getpid()},父进程的PID:{os.getppid()},--------{name}') time.sleep(1) if __name__ == '__main__': # 主进程 print('主进程开始执行') for i in range(5): # 创建第一个子进程 p1 = Process(target=sub_process, args=('xxy',)) # 没有给定target参数,不会执行自己编写的函数中的代码,会调用执行Process类中run方法 # 创建第二个子进程 p2 = Process(target=sub_process2, args=(18,)) p1.start() # 如果Process类创建对象时没有target参数,就调用Process类中的run方法去执行 p2.start() # 如果Process类创建对象时指定了target参数,start()调用target指定的函数去执行 # 终止进程 # p1.terminate() # p2.terminate() print('主程序执行结束') ``` ### 在 Oracle 数据库场景 在 Oracle 中有专用服务器和共享服务器两种模式。在专用模式下,一个会话对应一个 server process,控制 server process 的参数为 Process。例如可以通过 `show parameter process` 查看相关参数 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值