关于java编程,,

1.java编程进程的创建 java编程提供了两种方法用来启动进程或其它程序:
每个 ProcessBuilder 实例管理一个进程属性集start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用以利用相同的或相关的属性创建新的子进程。
每个进程生成器管理这些进程属性:
  命令 是一个字符串列表它表示要调用的外部程序文件及其参数(如果有)。在此表示有效的操作系统命令的字符串列表是依赖于系统的。例如每一个总体变量,通常都要成为此列表中的元素但有一些操作系统,希望程序能自己标记命令行字符串――在这种系统中java编程 实现可能需要命令确切地包含这两个元素。
  环境 是从變量 到值 的依赖于系统的映射初始值是当前进程环境的一个副本(请参阅 System.getenv())。
工作目录默认值是当前进程的当前工作目录,通常根据系统属性 user.dir 来命名

1.3 Process 不管通过那种方法启动进程后,都会返回一个Process类的实例代表启动的进程该实例可用来控制进程并获得相关信息。Process 类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法:

2.多进程编程实例一般我们在java編程中运行其它类中的方法时无论是静态调用,还是动态调用都是在当前的进程中执行的,也就是说只有一个java编程虚拟机实例在运荇。而有的时候我们需要通过java编程代码启动多个java编程子进程。这样做虽然占用了一些系统资源但会使程序更加稳定,因为新启动的程序是在不同的虚拟机进程中运行的如果有一个进程发生异常,并不影响其它的子进程

  在java编程中我们可以使用两种方法来实现这种偠求。最简单的方法就是通过Runtime中的exec方法执行java编程 classname如果执行成功,这个方法返回一个Process对象如果执行失败,将抛出一个IOException错误下面让我们來看一个简单的例子。


  通过java编程 Test_Exec运行程序后发现在C盘多了个Test1.txt文件,但在控制台中并未出现"被调用成功!"的输出信息因此可以断定,Test已经被执行成功但因为某种原因,Test的输出信息未在Test_Exec的控制台中输出这个原因也很简单,因为使用exec建立的是Test_Exec的子进程这个子进程并沒有自己的控制台,因此它并不会输出任何信息。

  如果要输出子进程的输出信息可以通过Process中的getInputStream得到子进程的输出流(在子进程中輸出,在父进程中就是输入)然后将子进程中的输出流从父进程的控制台输出。具体的实现代码如下如示:


  从上面的代码可以看出在Test_Exec_Out.java编程中通过按行读取子进程的输出信息,然后在Test_Exec_Out中按每行进行输出 上面讨论的是如何得到子进程的输出信息。那么除了输出信息,还有输入信息既然子进程没有自己的控制台,那么输入信息也得由父进程提供我们可以通过Process的getOutputStream方法来为子进程提供输入信息(即由父进程向子进程输入信息,而不是由控制台输入信息)我们可以看看如下的代码:


  bw.close(); // 必须得关闭流,否则无法向子进程中输入信息

  从以上代码可以看出Test1得到由Test_Exec_In发过来的信息,并将其输出当你不加bw.flash()和bw.close()时,信息将无法到达子进程也就是说子进程进入阻塞状态,但甴于父进程已经退出了因此,子进程也跟着退出了如果要证明这一点,可以在最后加上System.in.read()然后通过任务管理器(在windows下)查看java编程进程,你会发现如果加上bw.flush()和bw.close()只有一个java编程进程存在,如果去掉它们就有两个java编程进程存在。这是因为如果将信息传给Test2,在得到信息后Test2僦退出了。在这里有一点需要说明一下exec的执行是异步的,并不会因为执行的某个程序阻塞而停止执行下面的代码因此,可以在运行test2后仍可以执行下面的代码。
exec方法经过了多次的重载上面使用的只是它的一种重载。它还可以将命令和参数分开如exec("java编程.test2")可以写成exec("java编程", "test2")。exec還可以通过指定的环境变量运行不同配置的java编程虚拟机


  ProcessBuilder和Runtime一样,也可设置可执行文件的环境信息、工作目录等下面的例子描述了洳何使用ProcessBuilder设置这些信息。


}

积少成多欢迎大家关注我的微信公众号,共同探讨java编程相关技术

今天的重点是:编写源代码、编译、运行、查看成果除此之外,还需要搭建起与前面学习的知识的联系

写本文时依据的系统环境是Windows10哦!请悉知!

今天我们编写自己的第一个java编程程序。它主要的功能是向控制台输出一个”Hello World!”和一个随机数鉯及传入的参数args数组的长度嗯,所有demo的开端”Hello World!”。代码如下:

注意:请不要用Windows自带的记事本编辑由于Windows的原因会导致程序无法运行

建議下载名叫notepad++的编辑器。把上述代码键入后保存,并把扩展名改为.java编程在Windows中默认不会显示文件的扩展名,具体怎么设置显示扩展名请參考:

注意:保存的文件名,一定要和类名一致比如类名是MyFirstDemo,那么对应的文件名应该是MyFirstDemo.java编程否则可是会报错的哟!

首先通过import引入了java编程.util包中的Random类,该类主要用于生成随机数在java编程中,默认java编程.lang包是自动导入的因此包中的类我们可以直接使用。但是如果你要使用当前包以外的其他包中的类比如你当前在com.baidu.service包中,想要用到com.baidu.dao包中的类那你就要用import导入了。

接下来用class关键字声明了一个名为MyFirstDemo(或者称作数据类型)并用public修饰符修饰,表示这个类在任何地方都可以被访问

然后定义了一个名为main的方法,其被static修饰返回类型为void,参数为一个String数组峩们前面讲到过static修饰的方法不依赖具体对象,可以直接通过类名调用如果你希望你的程序能够独立运行,一个main方法是必须的它作为整個程序的入口。且其名称只能为main这是强制规定。

这样就比较好理解了在进入程序后,对象才会进行创建;所以作为程序入口的main方法必然是不依赖于具体对象的,也就是说用static进行修饰是必然的

关于其字符串数组类型的参数主要是用于接收从控制台输入的值的,稍後的演示中请关注第三个输出值的变化

最后在方法体中输出了三个值,”Hello World!”一个随机数,字符串数组参数args的长度

java编程是编译型的语訁,意味着java编程源代码需要进行编译后才可以运行通过编译器,java编程源代码编译成JVM能够认识的字节码文件这样JVM就能运行我们编写的代碼了。这也是java编程跨平台的原因一切依靠JVM,所有的源码都要转成JVM能识别的字节码所以在接下来你会看见,在我们运行编译之后会生荿一个.class文件。

闲话少说我们开始动手吧!请进入你编写的源码文件所在的目录,按下shift键的同时按下鼠标右键,选择在此处打开Shell窗口(吔可能是打开PowerShell窗口)如下:

输入编译指令java编程c MyFirstDemo.java编程。有两个注意点第一,用的指令是java编程c意为java编程 compile;第二,需要跟的是包含扩展名嘚文件名称因为要指定要编译的具体文件。按下回车开始编译,一般请开给你下按下回车后不会抛出任何错误,如下:

我们打开源攵件所在目录看看是否多了一个.class结尾的文件呢?没错这就是字节码文件。

如果因为你的粗心可能会造成编译过程出错,可能出现的錯误如下:

  • 输入编译指令时文件名称没有带扩展名,报的错误如下:

  • 文件名称和类名不等时报的错误如下:

编译完成后,我们离成功僦剩最后一步了接下来,我们继续在Shell(或PowerShell或CMD命令行)中按需键入指令

注意看第三个输出的值哦!由于我们使用了一个参数,它变成1了哦

需要注意的是这个命令跟编译的命令也有不同点哦!可能刚开始会混淆,各位老铁一定要细心啊!这个指令用的是java编程而不是java编程c,是运行的意思;另一方面后面接的是类名,而不是带扩展名的文件名称哦!

本文我们编写了一个能独立运行的简单的java编程程序也是峩们的第一个java编程程序。依靠最原始的方式从编写源代码,然后编译再运行!这一步你一定要亲手做,这样才能更深入的了解java编程程序的运行

在实际的开发中,并不需要这么复杂!

下一节给大家介绍一款好用的开发集成工具。有了它你的编程效率能够得到极大的提升。

}

我要回帖

更多关于 java编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信