「java异步事件」java中的异步处理
本篇文章给大家谈谈java异步事件,以及java中的异步处理对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Java中的线程同步与异步如何理解?
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。
另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。
就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
同步就是只能A走完某一段然后停下,让B开始走一段再停下,再让A走。。如此往复。简单理解就是,必须是一段程序执行完后才能执行后面的程序。。
异步就是,同一时间可能A和B同时都在往终点赶,此时不存在先后顺序,就是说,两个程序可以同时执行,称为异步。
Java中的异步网络编程
本文对编写客户服务器应用的java程序员有所帮助 可以解决程序在对方出现故障的时候继续稳定运行 目前java平台已经广泛应用于各类客户/服务器系统中 在实际编程中 往往需要网络的异步处理 比如客户程序 如果客户程序运行先于服务程序 则客户程序则需要在服务程序启动后再自动连接服务程序 在客户程序运行中如果服务程序中途停止 则也需要在不停止的条件下 等待服务程序运行并重新连接 下面提供了一类异步编程的方法
网络异步应用涉及到如下几个关键点
◇ 客户应用启动后 检测服务应用是否存在 如果不存在 则等待服务应用启动 同时不堵塞客户应用其他任务的执行 一旦服务应用启动 客户应用应该及时的与其建立连接 ◇ 客户应用和服务应用在数据通信中 服务应用异常退出后 客户应用应可以检测到服务应用的退出 同时客户应用自动清除该通信链路 回到初始状态 等待服务应用重新启动
该网络异步编程首先涉及到一个定时器和定时器事件 该定时器用于不断的检测网络中客户应用和服务应用是否连通 同时在服务应用出现异常时中止数据通信 返回到初始状态 网络的故障可以通过网络方法的异常处理获知
定时器包含在网络通信类中 使得使用该类的应用感知不到定时器的存在 而方便的处理网络信息
客户程序类如下结构 public class NetComm implements ActionListener{ javax swing Timer timer = new javax swing Timer( this); Socket sock;private EventNotifier en;public static int net_state = ;InetAddress ServerAddr;int ServerPort; public NetComm(InetAddress addr int port){ ServerAddr = addr; ServerPort = port;}
public void NetComm_Init() { net_state = ; try { sock = new Socket(ServerAddr ServerPort); } catch (IOException e) { net_state = ; } timer start();} public void NetComm_Data(){ try { OutputStream outputstream = sock getOutputStream(); BufferedWriter out = new BufferedWriter (new OutputStreamWriter(outputstream)); out write( java by ghf@china ); out flush();
BufferedReader in = new BufferedReader (new InputStreamReader(sock getInputStream())); boolean more = true; while(more) { String str = in readLine(); if(str == null) more = false; else // 处理数据 System out println(str); } in close();
} catch (IOException e) { NetComm_Close(); net_state = ; } timer start(); } public void NetComm_Close() { if(sock != null) try{ sock close(); } catch ( IOException e) { } } public void actionPerformed(ActionEvent e) { if(net_state == ) NetComm_Init(); else NetComm_Data(); }}
在以上程序中 也可以为外部应用提供一个回调函数 以便在网络异常或恢复正常时通知应用 服务应用的网络通信类类似 可以放在同一类中
lishixinzhi/Article/program/Java/hx/201311/27252
java中异步处理和同步处理分别是什么意思
举个例子:A和B一起从某点出发到终点。
同步就是只能A走完某一段然后停下,让B开始走一段再停下,再让A走。如此往复。简单理解就是,必须是一段程序执行完后才能执行后面的程序。
异步就是,同一时间可能A和B同时都在往终点赶,此时不存在先后顺序,就是说,两个程序可以同时执行,称为异步。
java异步事件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中的异步处理、java异步事件的信息别忘了在本站进行查找喔。