java有多进程吗?我这样做算是多进程么?

zychere 2014-12-05 05:49:49
java每执行一个编译好的文件是不是都是独立启动一个线程?
写了一个爬虫的小例子:
package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;

public class SpiderTest{
public static void main(String[] args) throws IOException, InterruptedException {
URL url =new URL("http://www.baidu.com");
Proxy proxy = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("118.26.147.119",80));
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
connection.setConnectTimeout(10000);
connection.setReadTimeout(100000);
connection.setRequestMethod("GET");
connection.setUseCaches(true);
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
connection.connect();
System.out.println(connection.getResponseCode());
int i = connection.getResponseCode();
String content = "";
if(i==HttpURLConnection.HTTP_OK){
InputStream in = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in,"gbk"));
String line = "";
while((line=br.readLine())!=null){
content+=line+"\n\r";
}
System.out.println(content);
}

}
}


package test;

import java.io.IOException;
import java.util.Scanner;

public class ControlTest {
public static void main(String[] args) throws IOException {
Process process = Runtime.getRuntime().exec("java SpiderTest");
Process process2 = Runtime.getRuntime().exec("java SpiderTest");
Process process3 = Runtime.getRuntime().exec("java SpiderTest");
Process process4 = Runtime.getRuntime().exec("java SpiderTest");
Process process5 = Runtime.getRuntime().exec("java SpiderTest");
Process process6 = Runtime.getRuntime().exec("java SpiderTest");
Process process7 = Runtime.getRuntime().exec("java SpiderTest");
Process process8 = Runtime.getRuntime().exec("java SpiderTest");
Process process9 = Runtime.getRuntime().exec("java SpiderTest");
Process process11 = Runtime.getRuntime().exec("java SpiderTest");
Process process12 = Runtime.getRuntime().exec("java SpiderTest");
Process process13 = Runtime.getRuntime().exec("java SpiderTest");
Process process14 = Runtime.getRuntime().exec("java SpiderTest");
Process process15 = Runtime.getRuntime().exec("java SpiderTest");
Process process16 = Runtime.getRuntime().exec("java SpiderTest");

System.out.print(process);
}


}


1、这里面我在ControlTest 这里面执行的process是不是独立的进程
2、我如果想往里面传参数的话是不是只能通过String args[]传参数?
3、我如何监控这些进程的运行情况,在windows的进程管理器中只能看到javaw.exe进程。
4、我这个是把编译好的SpiderTest.class文件放到了根目录下,有没有办法直接执行build里的class文件?
谢谢!
...全文
738 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArayChou 2014-12-09
  • 打赏
  • 举报
回复
这样做没有任何好处. 缺点倒是有一些: 比如,除了你的工作线程意外,每个java虚拟机都开了若干额外的线程(例如GC线程),消耗系统资源; 额外的内存占用等等. 有人研究吧不同Java程序跑在同一个虚拟机里,没有人研究吧同一个程序泡在多个虚拟机里. (试验集群除外)
zychere 2014-12-09
  • 打赏
  • 举报
回复
引用 2 楼 rumlee 的回复:
如果你是同一台机器上,多个进程感觉真没有必要,一般采用多线程就能够很好的解决了啊。
我现在想抓取多个网站内容,每个网站用多线程去抓: 那么我用多线程来区分不同网站,再用多个爬虫分别在多个线程去抓网站会不会出问题? 如果用一个进程抓一个网站,同时有多个线程控制多个爬虫去抓是不是更好一点?
zychere 2014-12-09
  • 打赏
  • 举报
回复
引用 4 楼 ArayChou 的回复:
这样做没有任何好处. 缺点倒是有一些: 比如,除了你的工作线程意外,每个java虚拟机都开了若干额外的线程(例如GC线程),消耗系统资源; 额外的内存占用等等. 有人研究吧不同Java程序跑在同一个虚拟机里,没有人研究吧同一个程序泡在多个虚拟机里. (试验集群除外)
那我现在想在同一时刻对多个网站进行抓取,并且每个网站都有多个爬虫线程运行,这种情况怎么办?线程中嵌套线程么?
rumlee 2014-12-06
  • 打赏
  • 举报
回复
如果你是同一台机器上,多个进程感觉真没有必要,一般采用多线程就能够很好的解决了啊。
冥王之锤 2014-12-05
  • 打赏
  • 举报
回复
1、这里面我在ControlTest 这里面执行的process是不是独立的进程? 是,Runtime.exec() 方法创建一个本机进程,并返回 Process 子类的一个实例。 2、我如果想往里面传参数的话是不是只能通过String args[]传参数? 进程间通讯方法不止一种。命令行参数可以。 3、我如何监控这些进程的运行情况,在windows的进程管理器中只能看到javaw.exe进程。 java SpiderTest 也是java应用,所以只能看到java进程。 可以考虑进程间通讯。 4、我这个是把编译好的SpiderTest.class文件放到了根目录下,有没有办法直接执行build里的class文件? java -cp build完成路径 SpiderTest
内容概要:本文围绕基于粒子群算法(PSO)的风电与水电(抽水蓄能)联合优化调度问题展开研究,旨在通过智能优化算法实现可再生能源的高效利用与电力系统的经济稳定运行。文中系统阐述了粒子群算法的核心原理及其在电力调度中的适用性,构建了综合考虑风电出力不确定性、抽水蓄能电站调节能力及系统运行约束的联合优化调度模型。采用Matlab进行算法编程与仿真求解,验证了该方法在降低系统综合运行成本、提升新能源消纳水平、增强电网调峰调频能力等方面的优越性能。研究进一步设计了多种对比场景,分析不同调度策略下的系统表现,充分展示了所提模型在应对复杂运行条件时的鲁棒性与实用价值。; 适合人群:具备一定电力系统分析基础和Matlab编程能力的研究生、科研人员,以及从事新能源并网调度、电力系统规划与运行等相关领域的工程师; 使用场景及目标:①应用于风电场与抽水蓄能电站的协同优化调度决策支持;②为高比例可再生能源接入的电力系统提供经济可靠的低碳调度方案;③服务于高校及科研院所中关于智能优化算法在能源系统中应用的教学与科研实验; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节与模型构建逻辑,重点关注目标函数设计、约束条件处理及参数设置对优化结果的影响,并通过复现仿真结果来掌握粒子群算法解决复杂非线性调度问题的关键技术要点。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧