`
t8500071
  • 浏览: 112927 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

多线程执行Rumtime.exec遇到的问题

    博客分类:
  • java
阅读更多
在启动多线程对一个网段执行ping命令时,当线程数开到200以上,就很容易报如下异常:
引用

java.io.IOException: Cannot run program "ping": CreateProcess error=8, ?洢???×???¨???í
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at pingTest.SynPingTest.run(SynPingTest.java:68)
Caused by: java.io.IOException: CreateProcess error=8, ?洢???×???¨???í
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 5 more


不知道为什么,是jvm不能同时执行多个process,还是不能同时执行多个ping命令?
贴上代码:

package pingTest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SynPingTest extends Thread
{
    protected static Runtime rt = Runtime.getRuntime();
    
    private int ip = 1;
    
    public SynPingTest(int i)
    {
    	this.ip = i;
    }

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        for (int i = 0; i <= 200; i++)
        {
            SynPingTest spt1 = new SynPingTest(i);
            spt1.start();
            SynPingTest spt2 = new SynPingTest(i);
            spt2.start();
            /*try
            {
                sleep(100);
            }
            catch (InterruptedException e)
            {
            }*/
        }

    }

    @Override
    public void run()
    {
        Process p = null;
        try
        {
        	String ipAddr = "192.168.0." + ip;
            p = rt.exec("ping -a -w 300 -n 10 " + ipAddr);

            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
            String s = null;

            while ((s = bufferedReader.readLine()) != null)
            {
                if (!"".equals(s))
                {
                	if (s.indexOf("数据包") > -1 || s.indexOf("最短") > -1) {
						System.out.println(ipAddr + "  " + s);
					}
                }
            }
            p.destroy();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        finally
        {
            if(p!=null)
                p.destroy();
        }
    }

}


分享到:
评论
2 楼 t8500071 2012-03-08  
kavy.peng 写道
呵呵 今天遇到同样问题。网上除了您就没人说这个咯,不知道您是怎么解决的呢?赐教!

没有,我加了点延时。。每个命令之间加了点时间间隔
1 楼 kavy.peng 2012-03-08  
呵呵 今天遇到同样问题。网上除了您就没人说这个咯,不知道您是怎么解决的呢?赐教!

相关推荐

    OpenMP简易教程

    - `#pragma omp parallel`定义了一个并行区域,该区域内可以创建多个线程来执行并行任务。 - 可以附加子句来进一步控制并行行为,例如`num_threads`用于指定线程数量。 **4. for指令的使用方法:** - `#pragma ...

    arcgis-runtime-sdk-java-100.11.2.zip

    在arcgis开发者官网下载的rumtime 100.11.2开发包java版本,由于官网抽风经常上不去,我下载了上传造福大家

    详解Go语言的计时器

    Go语言的标准库里提供两种类型的计时器Timer和Ticker。Timer经过指定的duration时间后被触发,往自己的时间channel发送当前时间,此后...两种计时器都是基于Go语言的运行时计时器runtime.timer实现的,rumtime.timer

    ArcGIS_Runtime_SDK_Qt_Windows_100_13_1.exe

    在arcgis开发者官网下载的rumtime 100.13.1开发包qt windows版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_Qt_Windows_100_11_2.exe

    在arcgis开发者官网下载的rumtime 100.11.2开发包qt windows版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_iOS_100_14_1.pkg

    在arcgis开发者官网下载的rumtime 100.14.1开发包ios版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_iOS_100_13_2.pkg

    在arcgis开发者官网下载的rumtime 100.13.2开发包ios版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_DotNet_100_13_1.vsix

    在arcgis开发者官网下载的rumtime 100.13.1开发包 .net版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_DotNet_100_13_0.vsix

    在arcgis开发者官网下载的rumtime 100.13.0开发包 .net版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_iOS_100_13_0.pkg

    在arcgis开发者官网下载的rumtime 100.13.0开发包ios版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_DotNet_100_11_2.vsix

    在arcgis开发者官网下载的rumtime 100.11.2开发包 .net版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_iOS_100_11_2.pkg

    在arcgis开发者官网下载的rumtime 100.11.2开发包ios版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_Qt_Windows_100_13_0.exe

    在arcgis开发者官网下载的rumtime 100.13.0开发包qt windows版本,由于官网抽风经常上不去,我下载了上传造福大家

    ArcGIS_Runtime_SDK_iOS_100_11_0.pkg

    在arcgis开发者官网下载的rumtime 100.11开发包,由于官网抽风经常上不去,我下载了上传造福大家

    java_portable.rar

    4. `jre\bin`下的`server`和`client`目录:包含不同JVM实现,服务器端JVM优化于多线程和大内存应用,客户端JVM适用于资源有限的设备。 5. `jre\lib`目录下的`rt.jar`:包含了Java标准类库的实现。 6. `jre\lib\ext`...

    Vulkan Runtime Installer_v1.0.65.0.exe

    Vulkan是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯组织在2015年游戏开发者大会(GDC)上发表。

    runtime.rar

    Codesys运行时是Codesys系统的核心部分,它允许用户在目标设备上执行编译好的控制程序。对于树莓派这样的嵌入式平台, Codesys运行时提供了在小型硬件上实现自动化控制的能力,这对于教育、实验或者低成本的自动化...

    APToolV7200(2020-05-20).rar

    芯邦量产工具APTOOL,适用于2199, 2199C, 2199E, 2199EB, 2199ES, 2199S, 2199SC.部分量产需搭配UMPToolV7200,先APTOOL擦除量产信息后再用UMPToolV7200进行量产。

    C++ OnnxRuntime部署yolov8模型

    总之,C++结合ONNXRuntime部署YOLOv8模型涉及到模型加载、输入预处理、推理执行、输出后处理等多个环节。通过这种方式,你可以将训练好的YOLOv8模型集成到实时应用中,实现高效的目标检测功能。

    ArcGIS Runtime SDK for Android v10.2.3

    ArcGIS基于Android最新开发工具v10.2.3

Global site tag (gtag.js) - Google Analytics