package thread;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
//子进程
public class TestFile {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("由父进程调用的信息:"+br.readLine());
// TODO Auto-generated method stub
File f=new File("D:/demo/testfile.txt");
f.createNewFile();
System.out.println("被调用成功!");
//System.in.read();
}
}
一、通过RunTimepackage thread;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
//给子进程程序传递输入信息
public class TestRunTime2 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("主进程调用开始");
Runtime run=Runtime.getRuntime();
Process p=run.exec("java thread.TestFile");
//向子进程输入
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
bw.write("Hello World!");
bw.flush();
bw.close();
//获取子进程信息
BufferedInputStream bi=new BufferedInputStream(p.getInputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(bi));
//或执行下面一行也可以
//BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while((s=br.readLine())!=null){
System.out.println("子进程输出:"+s);
}
System.out.println("主进程调用结束");
br.close();
bi.close();
}
}
二、通过ProcessBuilder
package thread;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
/**
* ProcessBuilder创建进程
* 与Runtime类似,不同的是一个是start一个是exec来启动子进程
* @author wxg1022
*
*/
public class TestProcessBuilder {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ProcessBuilder p=new ProcessBuilder("java","thread.TestFile");
Process process=p.start();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("Hello java");
bw.flush();
bw.close();
BufferedReader br=new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
while((s=br.readLine())!=null){
System.out.println("输出:"+s);
}
}
}
分享到:
相关推荐
该文档编写的主要目的是通过fork创建多个子进程的方法。
创建多个子进程,子进程有相同的父进程。在后台开发的时候有很好的代码参照
上机实验,在Linux环境下进行进程创建和实现多进程并发
基于Windows的进程建立程序,不过是全英文版
当父进程发现请求数 >= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子进程。 总的来说,思想是让子进程accept并处理...
1号进程创建2,3号两个进程 2号进程创建两个线程Thread1,Thread2 Thread1:求(1~n)之间的素数 Thread2:生成Fibonacci序列 3号进程创建4,5号两个进程 4号进程执行系统命令,ls,ps,cp等 5号进程执行一个用户...
(一)多进程并发执行是使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。 (二)实验中要用到的函数 ...
目前从实验结果来看,python 使用multiprocessing来创建多进程时,无论数据是否不会被更改,子进程都会复制父进程的状态(内存空间数据等)。所以如果主进程耗的资源较多时,不小心就会造成不必要的大量的内存复制,...
进程的创建 编写一段程序,使用系统调用fork()创建两个子进程.当此程序运行时,在系统中有一个父进程和两个子进程活动.让每一个进程在屏幕上显示一个字符:父进程显示字符”a”;子进程分别显示字符”b”和字符”c”.试...
linux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多进程编程 forklinux 多...
这些区是可被共享和保护的独立实体,多个进程可共享一个区。为了对区进行管理,核心中设置一个系统区表,各表项中记录了以下有关描述活动区的信息: 区的类型和大小、区的状态、区在物理存储器中的位置、引用计数、...
使用python的多进程、多线程技术,实现互联网数据的并行下载,一个进程可以设置n个线程,多进程通过开启多个运行脚本来实现,这样可以根据具体的硬件环境任意启动多个进程。数据主要是通过下载百度地图api中
资源可以在一个winform页面同时加载多个exe到页面,并且可以传参数。
创建四个子进程实现10W个浮点数相加求和
启动程序,隐藏DOS窗口 创建一个进程等这个进程执行完毕再继续往下执行.zip
Google 浏览器 Chrome 解决多进程问题 Google Chrome 浏览器在每次打开新标签页时,会在系统进程中加入一个新的 Chrome.exe 进程,这使得任务栏管理器中显示许多 Chrome.exe 进程,占用了很多内存空间。下面将介绍...
PHP创建多进程需要使用到pcntl模块 在编译时加上–enable-pcntl打开进程控制支持,不是Unix类系统不支持此模块 php官网介绍http://php.net/manual/zh/book.pcntl.php,创建子进程需要使用到pcntl_fork(),文档上介绍该...
Python_multiprocessing_2_创建进程_(多进程_多核运算_教学教程tutorial)
实现进程间同步,父进程创建子进程,在Linux下实现多进程设计
C语言模拟实现操作系统中进程的创建,可以创建一个或者多个子进程,以进程树的形式直观显示。C语言模拟实现操作系统中进程的创建,可以创建一个或者多个子进程,以进程树的形式直观显示。