Java并发编程:进程的创建
Java并发编程:进程的创建
*/-->
code {color: #FF0000}
pre.src {background-color: #002b36; color: #839496;}
Java并发编程:进程的创建
Table of Contents
上次聊了进程和线程的相关概念,那么,怎么在Java中创建一个进程呢?
当我们创建一个应用程序,然后执行这个程序,系统肯定会创建一个进程。我们这里讲的不是这种,而是在已经运行的程序内部再去调用运行其他程序来创建进程。
Java中调用其他程序有两种方式:Runtime.getRuntime().exec() 和 ProcessBuilder.start()。
1 Runtime.getRuntime().exec()
先看一个例子:
public class ProcessDemo {
public static void main(String[] args) {
Runtime proc = Runtime.getRuntime();
try {
proc.exec("open /Applications/Launchpad.app");
// proc.exec("open notepad.exe");
} catch (Exception e) {
e.printStackTrace();
}
}
}
在MacOsX中打开一个Launchpad.app程序,或者在Windows中打开一个记事本,就是这么简单。那么,我们观察一下,它是不是和我们有些语言中的exec一样,是阻塞运行的呢?
import javax.swing.JOptionPane; public class ProcessDemo {
public static void main(String[] args) {
Runtime proc = Runtime.getRuntime();
try {
proc.exec("open /Applications/Launchpad.app");
// proc.exec("open notepad.exe");
JOptionPane.showMessageDialog(null,
"Finished!",
"TITLE",
JOptionPane.WARNING_MESSAGE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
可以看出,并不是阻塞运行的。
2 ProcessBuilder.start()
我们看一下用ProcessBuilder怎么实现?
public class ProcessDemo {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("open", "/Applications/Launchpad.app");
try {
pb.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ProcessBuilder 的command需要分开来写,第一个是command名称,后面是它的参数。我们发现和Rumtime的exec()其实差不多。如果,我们去看源码的话,发现Runtime的exec也是用的ProcessBuilder来实现的。
Date: 2017-07-03 22:39
Author: WEN YANG
Created: 2017-07-04 Tue 21:36
Java并发编程:进程的创建的更多相关文章
- Java并发编程:如何创建线程?
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...
- 【转】Java并发编程:如何创建线程?
一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认是java.exe或者javaw.exe(windows下可以通过 ...
- 2、Java并发编程:如何创建线程
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...
- Java并发编程:进程和线程的由来(转)
Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通 ...
- Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)
这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM.JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分. 说在前面,Java并发编程的实质,是线程 ...
- Java并发编程:如何创建进程?
转载自:http://www.cnblogs.com/dolphin0520/p/3913517.html 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程 ...
- java并发编程:如何创建线程
原文:http://www.cnblogs.com/dolphin0520/p/3913517.html 一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也 ...
- Java并发编程:线程和进程的创建(转)
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...
- 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程
许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...
- Java并发编程之深入理解线程池原理及实现
Java线程池在实际的应用开发中十分广泛.虽然Java1.5之后在JUC包中提供了内置线程池可以拿来就用,但是这之前仍有许多老的应用和系统是需要程序员自己开发的.因此,基于线程池的需求背景.技术要求了 ...
随机推荐
- webpack的一般性配置及说明
1.webpack的常规配置 先给出一个示例: const path = require('path'); const HtmlWebpackPlugin = require('html-webpac ...
- 【错误】mysql 出现 "1067 - Invalid default value for 'UPDATE_TIME' " 错误提示的解决办法
今天工作中遇到修改表结构的时候出现错误 Invalid default value for 'UPDATE_TIME 问题原因是因为db 表中update_time的默认时间写成了 '0000-00- ...
- Java版基于SpringBoot+Vue.js实现自动创表自动定时采集(各个微信公众号商城产品进行采集)-爬虫篇
- sudo、su、suid
sudo 是一种权限管理机制,管理员可以授权普通用户去执行 root 权限的操作,而不需要知道 root 的密码.sudo 以其他用户身份执行命令,默认以root身份执行.配置文件/etc/sudoe ...
- maven_上传到私服,以及从私服下载
公司由于没有maven,自己又想用,于是乎,就自己搭了一个nexus 1.苦逼不多说,将本地jar文件上传到maven 需要在本机(客户端windows)中的maven中的setting.xml添加这 ...
- paste 合并文件
1.命令功能 paste 用于合并文件的列,把每个文件以列对列的方式,一列列地加以合并. 2.语法格式 paste option file 参数选项 参数 参数说明 -d 指定间隔符合并文件(默 ...
- 【LeetCode】按 tag 分类索引 (900题以下)
链表:https://www.cnblogs.com/zhangwanying/p/9797184.html (共34题) 数组:https://www.cnblogs.com/zhangwanyin ...
- Element ui 上传文件组件(单文件上传) 点击提交 没反应
element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...
- spring mvc 和spring boot 中注解的使用
1 spring mvc和spring boot之间的关系 spring boot包含spring mvc.所以,spring mvc的注解在spring boot总都是可以用的吗? spring b ...
- Centos添加硬盘分区
1. 查看硬盘信息 fdish -l 此处/dev/sdb为新添加硬盘 2. 格式化为ext4硬盘格式 mkfs.ext4 /dev/sdb 亦可使用其他格式 硬盘空间大于2T时,MBR分区无法识别更 ...