`

创建多进程

阅读更多

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);
}
}

}
分享到:
评论

相关推荐

    tongbu.zip_linux 多进程_linux 进程_多进程Linux_进程同步

    “tongbu.txt”文件可能包含了具体的代码示例或教程,展示了如何在Linux下创建多进程并实现同步。通常,它会包含创建子进程、资源分配、同步原语的使用等步骤,帮助开发者理解并实践多进程同步的概念。 总之,了解...

    vc 多进程界面

    首先,创建多进程在VC++中主要涉及Windows API函数,如`CreateProcess`。这个函数用于启动新的进程并加载指定的可执行文件。参数包括程序路径、命令行参数、进程属性等。在创建新进程时,需要设置适当的进程安全属性...

    fork创建多个子进程

    fork 创建多个子进程 在操作系统中,fork 是一个非常重要的系统调用,它可以创建一个新的子进程。fork 创建多个子进程是指通过 fork 系统调用创建多个子进程,每个子进程可以执行不同的任务。下面我们将讨论三种...

    Python多线程与多进程笔记1

    在 Python 中,创建多进程可以使用 `multiprocessing.Process` 对象。例如: ```python import multiprocessing def worker(num): print(f"Worker {num} is running") if __name__ == "__main__": processes = ...

    linux多进程.rar

    创建多进程时,我们还需要掌握以下关键知识点: 1. **进程标识符(PID)**:每个进程都有一个唯一的整数标识符,用于区分系统中的其他进程。`fork()`成功后,父进程和子进程都会返回一个值,父进程返回子进程的PID,...

    易语言创建新进程

    创建新进程在很多场景都有应用,如运行外部工具、自动化测试、多线程编程等。了解并熟练掌握易语言创建新进程的技巧,对开发高效、稳定的程序有着重要意义。 总结,易语言创建新进程是一个涉及操作系统接口调用的...

    python实现 进程创建、控制与撤消

    - Python的`multiprocessing`模块提供了创建多进程的能力,可以同时运行多个独立的Python程序,每个程序都在自己的进程中运行。 2. **multiprocessing模块** - `multiprocessing`模块是Python的标准库之一,提供...

    多进程写sqlite互斥解决方案代码

    本文将详细探讨标题所提及的“多进程写SQLite互斥解决方案代码”,以及它如何处理多线程环境下的类似问题。 SQLite是一个轻量级、嵌入式的关系型数据库,广泛应用于各种桌面应用、移动应用甚至服务器端。然而,当多...

    (Linux C)利用多进程或多线程模拟实现生产者/消费者问题

    在"Linux C"环境下,可以使用`pthread`库来处理多线程,`fork`函数来创建多进程,`semaphore.h`头文件中的函数来管理信号量。通过这些工具,可以构建出一个稳定且高效的生产者/消费者模型。 最后,关于"站在巨人的...

    Android应用内多进程例子

    创建多进程的方式主要是在AndroidManifest.xml文件中为组件(Activity、Service等)添加`android:process`属性。例如: ```xml android:process=":myProcess"> ``` 在这个例子中,`:myProcess`是一个私有进程名...

    Linux进程创建及多进程并发

    本实验主要涉及两个核心知识点:进程创建和多进程并发。 1. **进程创建** 在Linux环境下,进程创建主要通过`fork()`系统调用来实现。`fork()`函数会创建一个与调用进程几乎完全一样的新进程,称为子进程。新进程...

    linux实验报告\操作系统进程创建父子进程实验报告.docx

    - **基本概念**: 进程间通信(IPC)是指在多进程或多线程环境下,不同进程之间交换数据的方法。在本次实验中,进程间通信主要体现在父子进程之间的并行执行。 - **实验中的进程间通信**: 虽然实验没有涉及到复杂的...

    多进程聊天室

    在聊天室场景中,服务器端创建多个进程,每个进程可以服务于一个或多个客户端,这样可以确保即使某一进程因异常崩溃,其他进程仍然能继续工作,保证了系统的可靠性。同时,多进程模型还允许服务器并行处理多个连接,...

    操作系统实验--进程的创建heu.pdf

    实验分为多个步骤,包括使用控制台命令创建EOS应用程序的进程,通过编程创建新进程,调试`CreateProcess`和`PsCreateProcess`函数,以及创建多进程。 实验环境是EOS实验系统和Windows XP操作系统。在设计实验时,...

    创建进程和销毁进程

    在编程领域,进程是操作系统资源分配...这只是一个基础的示例,实际应用中可能需要处理更多复杂情况,例如进程间的通信、错误处理等。在进行进程操作时,了解和遵循最佳实践是非常重要的,以确保程序的稳定性和安全性。

    c语言多进程多线程编程

    在C语言中,多进程编程可以通过使用fork()系统调用来创建新的进程。fork()函数创建一个新的进程,该进程是调用进程的一个复制品,继承了父进程的几乎所有的属性。父进程和子进程可以共享一些系统资源,如文件描述符...

    父进程创建子进程

    在计算机科学中,"父进程创建子进程"是操作系统中多任务并发执行的一个核心概念。在C++编程语言中,我们可以利用操作系统提供的API(应用程序接口)来实现这一功能。本实验旨在让学生理解进程的创建机制,以及如何在...

    C# winform页面多进程打开exe

    在WinForm应用中实现多进程打开exe,你需要创建多个`Process`对象,每个对象对应一个要运行的exe。确保为每个进程设置不同的`ProcessStartInfo`,以便传递不同的参数或设定不同的工作目录。 3. **参数传递**: - ...

    PHP多进程编程实例

    创建多进程的关键在于fork()函数。在Unix和类Unix操作系统中,fork()是一个系统调用,用于创建一个新的进程,这个新进程是调用进程的一个副本。在PHP中,pcntl扩展提供了pcntl_fork()函数来实现这一功能。当pcntl_...

Global site tag (gtag.js) - Google Analytics