`

线程的基本应用

 
阅读更多

一、线程的基本应用(thread.join())

 

/**
     * 保存等级保护定级备案申请信息
     */
    public void saveBash() throws Exception {
        String success = "";
        //得到前台传入的验证码
        String code = this.getRequest().getParameter("code");
        //得到session存入的验证码
        String yanZhenMa = this.getRequest().getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY).toString();

        if(!code.equalsIgnoreCase(yanZhenMa)){
            renderText("输入的验证码有误");
        }else{
            //得到请求唯一编号
            onlyCode = DummyServer.createOnlyCode("BJBH");
            //用于生成业务流水号的xml文件
            String xmlFile = DummyServer.createSblshReqXml(onlyCode,"30000031900754268913440300");
            //向uplond目录写文件
            DummyServer.createReqXmlFile(onlyCode,xmlFile);   
           
            //线程
            Thread thread = new Thread(){
                public void run(){
                    try{
                        String path = (new ReadXml().getClass().getResource("/").toString()+"data_download/").replace("file:/", "").replace("%20", " ");
                        String fileName = onlyCode+".xml";
                        File file = new File(path+fileName);
                        if(file.exists()){
                            //取申办流水号
                            sblsh = Base.readXml(file);
                            file.delete();
                            return;
                        }
                        Thread.sleep(200);
                        run();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            };
            //开启线程
            thread.start();
            //线程执行完成后(即file.exists()为ture时,链接下面的代码)
            thread.join();   
           
            //添加受理编号
            entity.setSlbh(sblsh);   
           
            //统一平台列名、列值集合集合
            Map<String,String> map = fhMap(entity);
           
            //受理状态对象
            WjBajv wjBajv = new WjBajv();
            wjBajv.setSlbh(sblsh);
            //保存等级保护定级备案申请信息、向统一平台插入数据
            success = manager.saveWjBash(entity,map,wjBajv);
           
            if(("1".equals(success))){
                renderText("备案成功,受理编号为:"+sblsh);
            }else{
                renderText("服务器出现异常,请重新备案!");
            }
        }
    }

 

 

分享到:
评论

相关推荐

    线程及线程应用总结

    - 线程是操作系统分配CPU时间的基本单位,一个进程可以包含一个或多个线程。 - Java中通过`java.lang.Thread`类或者实现`Runnable`接口来创建线程。 - 主线程:每个Java应用程序都有一个主线程,它是程序的入口点...

    线程——基本线程的应用和线程调用控件

    在本文中,我们将深入探讨线程的基本应用以及如何在程序中调用和控制线程。 1. **线程的基本概念**: - 进程:操作系统资源分配的基本单位,每个进程都有独立的内存空间。 - 线程:执行单元,是进程内的执行路径...

    操作系统原理线程概念与应用 操作系统原理线程概念与应用

    线程作为操作系统中的基本执行单元,是程序执行的最小单位,它比进程更轻量级,允许程序在同一时间执行多个不同的任务。本文将深入探讨操作系统原理中的线程概念及其应用。 线程的概念: 线程是进程中的一个执行...

    多线程实战应用

    线程是操作系统分配CPU时间的基本单位,一个进程可以包含多个线程。在单核CPU中,多线程通过时间片轮转实现并发,而在多核CPU中,不同线程可以真正地并行执行。多线程编程可以提高程序的响应速度和系统资源的利用率...

    在C#中编写多线程应用程序

    ### 在C#中编写多线程应用程序 #### 引言 多线程是现代软件开发中的一个重要概念,尤其是在像C#这样的高级编程语言中。它允许程序同时执行多个任务,从而提高了应用程序的性能和响应性。本文将详细介绍如何在C#中...

    基于SOCKET和多线程的应用程序间通信技术的研究.pdf

    本文将详细解析标题和描述中的核心知识点,包括SOCKET和多线程的基本原理,以及它们在实际应用中的具体实施策略。 ### SOCKET技术概览 SOCKET技术,即套接字技术,是网络编程中不可或缺的一部分,它为不同平台上的...

    java中线程的应用例子

    在Java编程语言中,线程是程序执行的基本单元,它允许程序同时执行多个任务。Java中的线程模型是建立在操作系统级别的线程之上的,因此,通过Java的线程机制,开发者可以充分利用多核处理器的资源,提高程序的并发性...

    多线程应用程序设计

    通过本次多线程应用程序设计实验,不仅掌握了多线程编程的基本技能,还学会了如何使用pthread库函数进行线程管理。更重要的是,在实验过程中培养了解决实际问题的能力,这对于今后的学习和工作都是非常宝贵的财富。

    Java多线程的简单应用

    首先,我们要理解线程的基本概念。线程是程序执行的最小单元,每个线程都有自己的程序计数器、虚拟机栈、本地方法栈,而它们共享堆内存和静态存储区。Java中的Thread类提供了创建和管理线程的方法。 1. 继承Thread...

    线程基本知识(英文)

    总之,理解和掌握线程的基本知识对于开发多线程应用至关重要。正确使用线程可以提高程序的并发性和效率,但同时也需要处理好线程同步、资源管理和通信等问题,以确保程序的稳定性和正确性。在MFC框架中,利用...

    多线程应用程序设计 报告

    ### 多线程应用程序设计知识点解析 #### 一、多线程程序设计基本原理 多线程编程是一种软件技术,允许在单个程序中并行执行多个任务或操作,从而提高程序的性能和响应能力。在多核处理器普及的今天,多线程编程...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)

    本资源包含六个C#.NET多线程实例,涵盖了多线程的基本使用以及高级特性,如线程互斥,确保了线程安全和数据一致性。 1. **多线程基础**: - **创建线程**:在C#中,可以使用`Thread`类创建新线程。通过构造函数...

    用ProC开发多线程应用程序

    首先,我们要理解多线程的基本概念。多线程意味着在一个进程中可以有多个执行线程,它们共享同一内存空间,包括代码段、数据段。每个线程拥有独立的程序计数器、寄存器和堆栈,这使得它们可以并行执行不同的任务。...

    嵌入式Linux应用程序开发第9章多线程编程

    "嵌入式Linux应用程序开发第9章多线程编程" 本章主要讲解了 Linux 中的多线程编程,包括 Linux 线程的基本概念、创建及使用、属性设置、同步与互斥问题的处理等内容。通过学习本章,读者将掌握 Linux 中线程的基本...

    Delphi多线程数据库应用程序编程技术

    在IT领域,多线程数据库应用程序编程是一项关键的技术,尤其在使用Delphi这种高效、强大的RAD(快速应用开发)工具时。Delphi以其高效的VCL框架和原生的编译器支持,使得开发者能够轻松地构建多线程的数据库应用,...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)(十分经典)

    1. **多线程基本使用**: 多线程的基本使用通常涉及到创建和启动线程。在C#中,可以使用`System.Threading.Thread`类来创建新线程。通过实例化`Thread`对象并传递一个委托(如`ThreadStart`或`...

    数据采集多线程采集应用

    首先,理解多线程的基本概念是至关重要的。在单线程系统中,任务按顺序执行,而多线程则允许多个任务同时进行,提高了系统资源的利用率。在Windows操作系统中,系统内核提供了一个多线程环境,开发者可以创建和管理...

    理解多线程,写一个多线程应用程序,要求能在用户级实现线程的调度,如启动、挂起、恢复、停止,的C thread、java thread实现。

    线程是操作系统分配CPU时间的基本单位,每个线程都有自己的程序计数器、栈、局部变量等,但共享同一块内存空间,包括全局变量和静态变量。线程间的通信比进程间通信更为高效,因为它们共享相同的地址空间。 在C语言...

Global site tag (gtag.js) - Google Analytics