java异步是什么,java中同步和异步有什么异同
各位老铁们,大家好,今天由我来为大家分享java异步是什么,以及java中同步和异步有什么异同的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
java异步方法什么意思
在JAVA平台,实现异步调用的角色有如下三个角色:调用者,取货凭证,真实数据
异步调用就是:一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据.
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率
只有一个马桶
很多人上厕所
要排队
这叫同步迅雷一次可以下载很多东西
这叫异步
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/27252java中同步和异步有什么异同
Java中交互方式分为同步和异步两种,异同情况如下:
同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
扩展资料:同步是用于确保资源一次只能被一个线程使用的过程,同步对于单线程程序没有任何好处。使用同步比非同步的性能差三到四倍。
线程都是独立的,而且异步执行,也就是说每个线程都包含了运行时所需要的数据或方法,而不需要外部的资源或方法,也不必关心其它线程的状态或行为。但是经常有一些同时运行的线程需要共享数据,此时就需考虑其他线程的状态和行为,否则就不能保证程序的运行结果的正确性。
需要做的是允许一个线程彻底完成其任务后,再允许下一个线程执行。必须保证一个共享的资源一次只能被一个线程使用。实现此目的的过程称为同步。
同步对于单线程程序没有任何好处。使用同步比非同步的性能差三到四倍。线程方法介绍:
构造函数:
Thread()
Thread(Runable target)
Thread(Runable target,String name)
Thread(ThreadGroup group,Runable target)
Thread(ThreadGroup group,Runable target,String name)
Thread(ThreadGroup group,String name)
参考资料:百度百科-java
java中什么同步什么是异步分别用在什么地方
java同步指的是synchronized机制,而非synchronized的都是异步,弄懂同步的概念就大致明白了两者的差别。
有关同步:
synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
五、以上规则对其它对象锁同样适用。
示例代码:
public class Thread1 implements Runnable{
public void run(){
synchronized(this){
for(int i= 0; i< 5; i++){
System.out.println(Thread.currentThread().getName()+" synchronized loop"+ i);
}
}
}
public static void main(String[] args){
Thread1 t1= new Thread1();
Thread ta= new Thread(t1,"A");
Thread tb= new Thread(t1,"B");
ta.start();
tb.start();
}
}
结果:
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4
关于java异步是什么的内容到此结束,希望对大家有所帮助。