`
zhaoningbo
  • 浏览: 619276 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
引言:
    最近两次被网友问到,关于java运行dos命令的问题。一个是问能不能,一个是反映他写的程序执行结束后runtime.exec()才会被执行到。类似的这类被主线程策略影响的问题都可以果断往线程上想。

正文:
    话不多说,直接上代码。
/*
 * Copyright (c) 2010 CCX(China) Co.,Ltd. All Rights Reserved.
 *
 * This software is the confidential and proprietary information of
 * CCX(China) Co.,Ltd. ("Confidential Information").
 * It may not be copied or reproduced in any manner without the express 
 * written permission of CCX(China) Co.,Ltd.
 *
 * Author: 赵宁勃
 * Date: 2012-6-6
 */
package com.number.demo.test;

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

public class TestRuntimeExec {

    public static void main(String[] args) {

        // 线程里执行command命令
        Thread t = new Thread() {
            @Override
            public void run() {
                try {
                    Process process = Runtime.getRuntime().exec("cmd /c dir");
                    InputStream in = process.getInputStream();
                    BufferedReader inr = new BufferedReader(
                            new InputStreamReader(in, "GBK"));
                    String line = null;
                    while ((line = inr.readLine()) != null) {
                        System.out.println(line);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        t.start();
        try {
            // (1)让主线程让一次CPU时间
            Thread.sleep(200);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 主线程继续做自己的事
        for (int i = 0; i < 50; i++) {
            System.out.println("" + i);
        }
    }
}

/*
驱动器 D 中的卷是 D
 卷的序列号是 CCD7-1C62

 D:\workspace\tmp 的目录

2012-05-25  14:59    <DIR>          .
2012-05-25  14:59    <DIR>          ..
2012-05-25  14:59               659 .classpath
2012-05-25  09:24               379 .project
2012-05-25  09:24    <DIR>          .settings
2012-05-25  15:05    <DIR>          bin
2012-05-25  11:26    <DIR>          lib
2012-05-25  15:03    <DIR>          src
2012-06-04  16:42    <DIR>          test
               2 个文件          1,038 字节
               7 个目录 134,112,276,480 可用字节
0
1
2
3
4
5
 */


  这段就是runtime.exec(COMMAND)的一个例子。第2位仁兄,问到的问题,解决办法就在代码注释“(1)”处——让主线程让一次CPU时间。
  这个跟JVM有关,简单地说,有个规则——thread.start()调用后,thread的run()不会被立即执行,而是通知JVM我thread可以执行了,进入等待状态了。






3
1
分享到:
评论

相关推荐

    java 使用dos命令详解

    #### 一、Java调用DOS命令的基础方法 Java提供了`Runtime`类以及其子类`Process`来实现对操作系统的调用。其中,`Runtime.getRuntime().exec(command)`是执行外部程序的主要方法,它可以创建一个新进程并返回一个`...

    JAVA如何调用DOS命令.doc

    本文将详细介绍如何在Java中调用DOS命令,包括基本原理、常见问题及解决方案。 #### 一、基础知识 在Java中,主要通过`java.lang.Runtime`类和`java.lang.Process`类来实现调用DOS命令的功能。具体步骤如下: 1. ...

    Java-DOS小插件

    ### Java-DOS小插件:实现文件夹或驱动器的快速DOS访问及根目录浏览功能 #### 背景介绍 在日常工作中,我们经常需要通过命令行工具(如DOS窗口)来执行一些系统操作,比如文件管理、程序调试等任务。然而,默认情况...

    JAVA如何调用WINDOWS命令行.doc

    本文将详细介绍如何使用Java来调用Windows命令行,包括执行DOS内部命令、打开不可执行文件以及处理具有标准输出的DOS可执行程序等常见场景。 #### 1. 使用`Runtime`类和`Process`类调用命令 Java提供了`java.lang....

    bat批处理文件设置java环境变量

    我们需要添加`%JAVA_HOME%\bin`到PATH中,以便系统可以在任何目录下运行Java命令。命令如下: ```batch setx PATH "%PATH%;%JAVA_HOME%\bin" /M ``` 这里,我们使用`%JAVA_HOME%`来引用已设置的`JAVA_HOME`变量...

    java零基础知识

    在【部分内容】中提到的“常用dos命令”,是Windows操作系统中运行命令行界面时可以使用的操作指令,包括help、dir、cd、cd..、cd\、cls、exit等。这些命令虽然不是Java语言的一部分,但在配置Java开发环境或者运行...

    JAVA基础面试题(经典).doc

    JRE是Java Runtime Environment,Java运行时环境,它包含了运行Java程序所需的Java虚拟机(JVM)、类库和其他组件。 2. **Java的平台无关性** Java的平台无关性源于其“一次编写,到处运行”的理念。Java源代码会...

    JAVA JDK 系统环境变量一键修改脚本.zip

    批处理文件是一种基于DOS或Windows系统的文本文件,包含了可执行的命令序列。在这种情况下,批处理脚本利用了Windows的`setx`命令来更新环境变量。`setx`命令允许用户设置新的或者修改现有的用户或系统环境变量,...

    textpad,简单好用的java编辑器

    它以其易用性和高效性,为开发者提供了一个无需繁琐DOS命令的编程环境。在本文中,我们将深入探讨TextPad在Java开发中的应用及其优势。 一、TextPad简介 TextPad并非是一款专门的Java集成开发环境(IDE),而是一...

    JAVA 版计算器,通过栈实现

    在"application 进行dos运行就可以"的描述中,意味着这个Java程序可以被编译成可执行的`.class`文件,然后在命令行(DOS窗口)中通过`java`命令运行。步骤如下: 1. **编译源代码**:使用`javac Calculator.java`...

    JAVA课堂笔记基础-详细解释.doc

    - `return`还可以立即终止方法的执行并返回到调用点。 **3. 对象与引用** - **对象创建**: - `Human aMan = new Human();` - `Human aMan`: 引用声明 - `new Human()`: 创建新对象 - **引用使用**: - 未初始化...

    Running Sybase SQL Anywhere Java Tools on Pentium 4.pdf

    ### 在Pentium 4上运行Sybase SQL Anywhere Java工具的问题及解决方案 #### 标题解析 **标题**:“Running Sybase SQL Anywhere Java Tools on Pentium 4.pdf” 该标题指出了文档的主题是关于如何在Pentium 4...

    dos常用命令.。。。。。。。

    根据提供的标题“dos常用命令”以及部分内容涉及到的Oracle数据库操作,我们可以提炼出一系列与DOS命令及Oracle数据库管理相关的知识点。 ### DOS常用命令 在Windows操作系统中,DOS(Disk Operating System)通常...

    电脑定时关机程序,有一定实用价值

    批处理文件是一种简单的文本文件,其中包含了DOS命令,可以执行一系列系统操作。在这个案例中,ShutDown.bat可能包含了`shutdown`命令,这是一个内置的Windows命令,用于管理系统关机、重启等操作。例如,`shutdown ...

    Java基础.docx

    4. **验证配置**:打开命令提示符(DOS窗口),通过运行命令 `java -version` 来验证配置是否正确。 #### 二、Java程序编写三步骤 1. **编写源文件**:使用文本编辑器编写 `.java` 文件。 2. **编译源文件**:使用...

    javase-day01.txt

    #### 二、Java运行环境概述 1. **JVM (Java Virtual Machine):** - JVM是一种虚拟机,它是Java程序能够在各种平台上运行的关键组件。JVM负责将Java字节码转换为特定平台的机器指令并执行。 2. **JRE (Java ...

    游戏画面就弹出内存不能为read修复工具

    解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne 之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。...

    Windows常用shell命令大全.docx

    - **快捷执行**: 在Windows 7及以上版本中,可以通过按下Win键并输入命令名称来快速执行命令。 - **运行窗口**: 使用Win+R组合键打开“运行”窗口,并在此处输入命令。 #### 二、常用Shell命令大全 ##### Windows...

Global site tag (gtag.js) - Google Analytics