`
wfwkiss
  • 浏览: 123940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程正常终了时 p1.waitFor() == 0

阅读更多
 /**
     * 判断路径是否含有空格(含有空格Dos start命令无法识别)
     */
    private static String setFilePath(String path) {
        int index = path.indexOf(" ");
        if (index != -1) {
            path = path.replaceAll(" ", "\"" + " " + "\"");
        }
        System.out.println("Dos Star 路径问题:" + path);
        return path;
    }

    /**
     * 导入SQL文件
     * @param path 文件保存路径
     * @param textid 单位ID
     */
    private void export(String path) {
        try {
            // 调用外部批处理文件 对SQL文件中的 INSERT 改写为 REPLACE
            callbat(path);
            //执行DOS命令
            String temp1 = "cmd /c mysql -u root --password=sa bc <";
            Process p1 = Runtime.getRuntime().exec(temp1 + setFilePath(path));
            if(p1.waitFor() == 0){
             
             //导入数据成功
             import_message("1");
             //导入之后进行合计计算
             TotalUp.executeSum();
             //合计失败
             if (!TotalUp.executeSum()) {
              System.out.println("导入后合计失败");
             }
            }
        } catch (IOException e) {
            //导入数据失败
            import_message("0");
            System.err.print(e);
        }
    }

 




因为当你在一个Process上调用waitFor方法时,当前线程是阻塞的,如果外部命令无法执行结束,那么你的线程就会一直阻塞下去,这种意外会影响我们程序的执行。所以在我们不能判断外部命令什么时候执行完毕而我们的程序还需要继续执行的情况下,我们就应该循环的使用exitValue来取得外部命令的返回状态,并在外部命令返回时作出相应的处理。
分享到:
评论

相关推荐

    从网上自动搜索可用免费代理的C#项目

    直接上结果吧,部分搜索结果展示 IP=195.62.39.24 Port=8080 Speed=283 IP=210.22.52.4 Port=8080 Speed=66 IP=222.180.173.10 Port=8080 Speed=53 IP=79.104.197.90 Port=8080 Speed=324 IP=209.97.203.64 Port=...

    OBControl v1.1控件 for Delphi

    而且提供多个函数和OnFinish线程完成、OnFinishAll所有线程完成等重要事件。 9.TOBZoom ==========  一个类似Windows放大镜的控件,如果需要写图像漫游的话就十分合适了。 10.TOBZlibMultiple ==========  使用...

    delphi线程池单元文件uThreadPool.pas

    // 线程处理请求时触发的事件 procedure DealwithCommRecvData(Sender: TThreadsPool; WorkItem: TWorkItem; aThread: TProcessorThread); // 线程初始化时触发的事件 procedure TProcessorThreadInitializing...

    修改过的适合Delphi7的GifImage程序(经多线程测试)

    原GifImage在多线程运行时,经常产生异常。因此特别做了特殊的判断和处理。 在调用时,需要特别注意。 var gif: TGifImage; image: TImage; aFileName: String; // 图片文件名称 begin .... gif := TGIFImage....

    java Swing窗体版多线程下载程序编写示例.rar

    java Swing窗体版多线程下载程序编写示例,多线程下载的实现, 将网络URL中指定的网络文件下载到本地文件中保存。  本代码中将完成新建任务构造器、配置文件构造器,保存下载信息,获取配置文件名,设置在前台显示...

    用 ajax + asp.net 采集文章

    原先用多线程来采集,但是觉得多线程采集要显示采集进度很麻烦。 后来改为单线程,边采集边显示进度。又发现出现采集错误的时候不方便作停止。 干脆用ajax 加 asp.net 服务端来采集。 发现有点好处,以后作断点续采...

    Python 网站目录获取.zip

    # coding=utf-8 # 目录扫描程序 class DirScan(threading.Thread): def __init__(self, queue, total): ... # 单独用一个线程去输出 threading.Thread(target=self.msg()).start() headers = { ......

    java 端口扫描工具 端口扫描

    c.insets = new Insets(10,0,0,10); c.gridx = 0; c.gridy = 0; c.gridwidth = 10; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; mPanel.add(type,c); group.add...

    EasyDown

    ===============================...采用多线程的机制,易用的界面,强大的功能,让你随心 所欲的下载. Copyright CODEHUNTER 2001-2002 WWW: http://codehunter.1yes.net http://codehunter.51software.net ...

    java用线程两种方式

    * 实现方式的好处:避免了单继承的局限性 在定义线程时. * 建议使用实现方式 * 区别: * 继承Thread:线程代码存放Thread子类run方法中 实现 * Runnable:线程代码存放接口的子类的run方法 * wait释放资源,释放锁 ...

    uThreadPool.pas 线程池示例 DEMO 修正资源死锁

    此发布修改了原作者在线程池Free时的一点问题:“不能结束工作中的工作者线程(资源死锁)”。 用法: // 创建线程池 FThreadPool := TThreadsPool.Create(Self); // 创建线程池 FThreadPool.ThreadsMin := 5; // ...

    Microsoft.AspNet.SignalR.2.4.0 Microsoft.AspNet.SignalR.Core.2.4.0

    线程 你 = 自我意识.你们.FirstOrDefault(u =&gt; u.ContextId == Context.ConnectionId); /* // 判断用户是否存在,存在则发送 if (user != null) { // 1V1 聊天,需要把消息往这2个客户端发送 // 给指定用户...

    Python语言基础:进程同步.pptx

    进程和线程一样,也存在着不同进程争抢共享内存的问题。 具体实现: import multiprocessing as mp import time def job(num1, num2): for _ in range(5): time.sleep(0.1) # 延时0.1S num1.value += num2 # v....

    《c++面向对象多线程编程》源代码.zip

    《c++面向对象多线程编程》源代码.zip

    自己写的易语言的文件夹复制源码,简单实用

    启动线程 (&线程_进度显示, , 线程句柄) .子程序 线程_进度显示 .局部变量 计次, 整数型 .局部变量 dir, 文本型 .局部变量 计次一, 整数型 .局部变量 path, 文本型 .局部变量 swit, 逻辑型 .局部变量 num, 整数型 ...

    Linux多线程服务端编程-陈硕.pdf

    本书主要讲述采用现代C++ 在x86-64 Linux 上编写多线程TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。这是在Linux 下以native 语言编写用户态高性能...

    javascripts的Timer

    在ria设计中,js中使用settimeout,无法立刻使线程退出,所以写个timer,可以模拟到Timer的start和stop, 例子1: var timer=new Timer(); var timerNum=0 timer.callback=function(){ timerNum++; } timer.start()...

    多线程程序设计forLinux.pdf

    多线程程序设计forLinux.pdf

    Android_开发技巧杂集_网络_半透明_异步线程

    1.检查是否有网络连接  Java代码  1. public static boolean isNetworkAvailable(Context context) {  2. ConnectivityManager cm = (ConnectivityManager) context.getSystemService(  3.... ...

Global site tag (gtag.js) - Google Analytics