Java中多进程编程的实现,和多线程一样,多进程同样是实现并发的一种方式,需要的朋友可以参考下
创新互联公司专注于企业营销型网站、网站重做改版、陈仓网站定制设计、自适应品牌网站建设、H5页面制作、商城网站开发、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为陈仓等各大城市提供网站开发制作服务。
1.Java进程的创建
Java提供了两种方法用来启动进程或其它程序:
(1)使用Runtime的exec()方法
(2)使用ProcessBuilder的start()方法
1.1 ProcessBuilder
ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处来实现进程的控制管理。
每个 ProcessBuilder 实例管理一个进程属性集。start() 方法利用这些属性创建一个新的 Process 实例。start() 方法可以从同一实例重复调用,以利用相同的或相关的属性创建新的子进程。
每个进程生成器管理这些进程属性:
命令 是一个字符串列表,它表示要调用的外部程序文件及其参数(如果有)。在此,表示有效的操作系统命令的字符串列表是依赖于系统的。例如,每一个总体变量,通常都要成为此列表中的元素,但有一些操作系统,希望程序能自己标记命令行字符串——在这种系统中,Java 实现可能需要命令确切地包含这两个元素。
环境 是从变量 到值 的依赖于系统的映射。初始值是当前进程环境的一个副本(请参阅 System.getenv())。
工作目录。默认值是当前进程的当前工作目录,通常根据系统属性 user.dir 来命名。
redirectErrorStream 属性。最初,此属性为 false,意思是子进程的标准输出和错误输出被发送给两个独立的流,这些流可以通过 Process.getInputStream() 和 Process.getErrorStream() 方法来访问。如果将值设置为 true,标准错误将与标准输出合并。这使得关联错误消息和相应的输出变得更容易。在此情况下,合并的数据可从 Process.getInputStream() 返回的流读取,而从 Process.getErrorStream() 返回的流读取将直接到达文件尾。
新建java第一种方法:
1。首先右击鼠标,新建一个文本文档。
2。更改文本文档的后缀名为
.java
。注意文件名必须和类名相同。
如果你的电脑没有显示后缀名的话需要对电脑进行一定的设置。
3。打开计算机——组织——文件夹选项——查看——将隐藏文件夹选项取消勾选即可。
建议将这个选项取消勾选,有很多的恶意程序会侵入我们的电脑,取消勾选可以很好的查看病毒等文件的类型。
4。右击建好的文档,选择编辑即可进行java的编写。
在编写的时候我们有一定的格式,java语言的格式是为了我们日后更改程序方便而规定的,我们一定要遵循这种格式编写。
第二种方法:
1直接新建一个记事本文档,然后选择保存。
注意保存时额位置,不要等到保存完却找不到文件到哪了。
2在选择保存的窗口中输入后缀“.java”,然后保存即可。注意文件名必须和类名相同。
3同样右击文件,选择编辑即可在文件中进行编辑了。
前两个大括号之间回车,第二对大括号有一个间隔,直接按TAb键即可。
测试运行java程序:
打开运行命令,也可以直接在开菜单中输入CMD调用命令窗口。
你的文件保存在哪里就将你的文件目录输入到命令提示符窗口中,例如我的是D盘根目录,所以我输入“d:”。
编译java文件,生成class文件:
在命令提示符中输入“javac
文件名.java”,我的文件名为A,所以输入javac
A.java然后回车,等待编译。
运行文件:
继续输入“java
文件名”然后回车就可以运行我们写好的文件了。
import java.awt.*;
import java.awt.event.*;
class MyDow extends Frame implements ActionListener{
private Label lName,lPassword;
private TextField tName,tPassword;
private Button login,rest,exitout;
private Label login_clew;
private int count=0;
private String myName="nihao";
private String myPassword="5201314";
public void setMyNP(String n,String p){
myName=n;
myPassword=p;
}
public MyDow(String str){
super(str);
}
public void init(){
setLayout(null);
setSize(400,300);
setVisible(true);
setResizable(false);
lName=new Label("姓名");
lName.setBounds(50, 70, 60, 30);add(lName);
lPassword=new Label("密码");
lPassword.setBounds(50, 120, 60, 30);add(lPassword);
tName=new TextField("");
tName.setBounds(110, 70, 200, 30);add(tName);
tPassword=new TextField("");
tPassword.setBounds(110, 120, 200, 30);add(tPassword);
login=new Button("登录");
login.setBounds(90, 200, 60, 30);add(login);
rest=new Button("重输");
rest.setBounds(170, 200, 60, 30);add(rest);
exitout=new Button("退出");
exitout.setBounds(250,200,60,30);add(exitout);
login_clew=new Label("");
login.addActionListener(this);
rest.addActionListener(this);
exitout.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==login){
if(count2){
if(tName.getText().equalsIgnoreCase(myName)tPassword.getText().equalsIgnoreCase(myPassword)){
removeAll();
add(login_clew);
add(exitout);
exitout.setLabel("确定");
login_clew.setBounds(160,120,200,30);
login_clew.setText("欢迎XX用户!");
exitout.setBounds(170,220,60,30);
}else{
add(login_clew);
login_clew.setBounds(90,160,200,30);
login_clew.setText("请输入正确的信息!");
count++;
}
}else{
add(login_clew);
login_clew.setBounds(90,160,200,30);
login_clew.setText("你输入的次数达到了3次,不能登录了!");
}
}else if(e.getSource()==exitout){
System.exit(1);
}else{
lName.setText("");
lPassword.setText("");
}
}
}
public class UserLogin {
public static void main(String args[]){
MyDow m=new MyDow("登录窗口");
m.init();
}
}
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
任何单位任何事情,首先强调的就是程序,因为管理界有句名言:细节决定成败。程序就是整治细节最好的工具。于是,现在我们的所有工作,无时无处不在强调程序。因为有了规范的办事程序,现在我们这些平民百姓到政府机关办事比原来容易了许多,最起码知道办什么事该找哪个部门,知道办这个事应该用多长时间了。
政府公开办事程序,也拉近了和人民群众的关系。好,这是好得很的事。好像是为了印证事物都是一分为二的道理一样,在赞颂程序的同时,我们也看到了程序冷酷的另一面。南宁见义勇为的英雄鲍光蛇在医院冷酷的程序中流尽了最后一滴血,公路收费站的值班人员因救护车交不出十元钱的过路费而坚决不放行救护车,终于使急需救助的患者丧命,……等等的例子,都为我们强调或者说奉为神圣规则的程序优先勾画出了它的原形。
程序,是管理方式的一种,是能够发挥出协调高效作用的工具,在我们的社会主义建设事业或者说现代化建设中,应该充分重视它的作用,应该不断地将我们的工作从无序整改到有序。
可是,当我们只关注形式而不关注实质的时候,有些事情就发展到了它的反面。程序不是医治百病的灵丹妙药,在它走向反面的时候,它是使那些官僚主义者和视劳苦大众利益如不见的人们推脱掉自己应当承担的责任的最好的挡箭牌。因为越是严密完善的程序,按部就班执行起来越是要付出时间的代价,当时间被浪费了时候,因此引发的其他损失是不应该由模范执行了程序的人来负责的。
java是高效解释执行的语言,高级语言程序必须转换为机器语言程序才能在计算机上执行,
但是,不同的计算机系统使用的机器语言不同。为了实现一次编译,处处运行的目标,java程序在编译时并不直接编译成特定的机器语言,而是编译成与系统无关的"字节码",由java虚拟机来执行。jvm使得java程序可以一次编译,处处运行。任何系统只有安装了java虚拟机后,才可以执行java程序。
jvm能直接在任何机器上运行,为字节码提供运行环境,当jvm解释执行java程序时,java实时编译器会将字节码译成目标平台对应的机器语言程序的指令代码。
如下:
(1) 一个Java语言开发工具包(Java Devekopment Kit),其中包括Java 编译器和Java运行环境。
(2) 一份Java语言API文档,目前版本的Java语言API文档同样可以免费。
(3) 一个Java语言集成开发环境,能够在其中编辑Java代码,并且进行编译与调试。推荐使用的集成开发环境是JCreator。
建议去找老师让老师 带你做 项目 我这几天正在做的 感觉收获好多的 上课学到的东西其实更本就不够用的 只有实践了 你才能知道自己的差距
package com.dream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Circle {
private static double area;
private static double circumference;
private static int sum = 0;
public static void main(String[] args) throws IOException {
System.out.println("==== 构建圆对象并计算其面积周长 ====");
System.out.println("请输入半径(直接按回车结束程序):");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = "";
do {
str = bf.readLine();
if (str.length() != 0) {
showMsg(Double.parseDouble(str));
}
} while (str.length() != 0);
bf.close();
}
private static void showMsg(double r) {
area = Math.PI*r*r;
circumference = 2*Math.PI*r;
sum++;
System.out.printf("构建了半径为 %.2f 的圆,圆面积 %.2f 、周长 %.2f \n目前圆个数为 %d\n", r, area, circumference, sum);
System.out.println("请输入半径(直接按回车结束程序):");
}
}
package com.dream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Rectangle {
private static double area;
private static double circumference;
private static int sum = 0;
public static void main(String[] args) throws IOException {
System.out.println("==== 构建矩形对象并计算其面积周长 ====");
System.out.println("请输入长度(直接按回车结束程序):");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = "";
do {
str = bf.readLine();
if (str.length() != 0) {
System.out.println("请输入宽度:");
String str1 = bf.readLine();
showMsg(Double.parseDouble(str), Double.parseDouble(str1));
}
} while (str.length() != 0);
bf.close();
}
private static void showMsg(double l, double w) {
area = l*w;
circumference = 2*l*w;
sum++;
System.out.printf("构建了长为 %.2f、宽为 %.2f 的矩形,其面积 %.2f 、周长 %.2f \n目前矩形个数为 %d\n", l, w, area, circumference, sum);
System.out.println("请输入半径(直接按回车结束程序):");
}
}
//=======================
package com.dream.zhangsan;
import com.dream.Shapeable;
public class Circle implements Shapeable{
@Override
public double getArea(double r) {
return Math.PI*r*r;
}
@Override
public double getCircumference(double r) {
return 2*Math.PI*r;
}
}
package com.dream.zhangsan;
import com.dream.Shapeable;
public class SemiCircle implements Shapeable{
@Override
public double getArea(double r) {
return Math.PI*r*r/2;
}
@Override
public double getCircumference(double r) {
return 2*r + Math.PI*r;
}
}
package com.dream.zhangsan;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Train1 {
public static void main(String[] args) throws IOException {
System.out.println("==== 实现图形接口的圆和半圆 ====");
System.out.println("请输入半径(直接按回车结束程序):");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = "";
do {
str = bf.readLine();
if (str.length() != 0) {
showMsg(Double.parseDouble(str));
}else {
System.out.println("程序结束!");
}
} while (str.length() != 0);
bf.close();
}
private static void showMsg(double r) {
Circle circle = new Circle();
SemiCircle semiCircle = new SemiCircle();
System.out.printf("圆面积 %.2f、周长 %.2f \n半圆面积 %.2f、周长 %.2f\n", circle.getArea(r), circle.getCircumference(r), semiCircle.getArea(r), semiCircle.getCircumference(r));
System.out.println("请输入半径(直接按回车结束程序):");
}
}
//========================================
package com.dream.lisi;
import com.dream.Shapeable;
public class Square implements Shapeable {
@Override
public double getArea(double r) {
return r*r;
}
@Override
public double getCircumference(double r) {
return r*4;
}
}
package com.dream.lisi;
import com.dream.Shapeable;
public class Cube implements Shapeable {
@Override
public double getArea(double r) {
return r*r*6;
}
@Override
public double getCircumference(double r) {
return r*12;
}
}
package com.dream.lisi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Train2 {
public static void main(String[] args) throws IOException {
System.out.println("==== 实现图形接口的正方形和正方体 ====");
System.out.println("请输入半径(直接按回车结束程序):");
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = "";
do {
str = bf.readLine();
if (str.length() != 0) {
showMsg(Double.parseDouble(str));
}else {
System.out.println("程序结束!");
}
} while (str.length() != 0);
bf.close();
}
private static void showMsg(double r) {
Square square = new Square();
Cube cube = new Cube();
System.out.printf("正方形面积 %.2f、周长 %.2f \n正方体表面积 %.2f、周长 %.2f\n", square.getArea(r), square.getCircumference(r), cube.getArea(r), cube.getCircumference(r));
System.out.println("请输入半径(直接按回车结束程序):");
}
}