<small id='5bove3k5'></small><noframes id='rscsgrbs'>

          <bdo id='ino6vqpe'></bdo><ul id='bf8sui0m'></ul>
      1. <i id='qt5pdgug'><tr id='oupunqtc'><dt id='o9e9sr5j'><q id='nh12540n'><span id='im8hzqn4'><b id='5f5ei6iu'><form id='uojspwea'><ins id='6tnhhc2n'></ins><ul id='dtu53y4g'></ul><sub id='ek7e18fz'></sub></form><legend id='gqqaljsf'></legend><bdo id='44vq8ala'><pre id='t1gfbhn6'><center id='v3y3n63o'></center></pre></bdo></b><th id='3wy02oiy'></th></span></q></dt></tr></i><div id='vc0fex40'><tfoot id='qi03hoa1'></tfoot><dl id='4wuob6b3'><fieldset id='1l1qxdhd'></fieldset></dl></div>

        <legend id='czzrtbgb'><style id='fr3md331'><dir id='i92kv0rl'><q id='n8oqvbuc'></q></dir></style></legend>

      2. <tfoot id='rq92fvjl'></tfoot>
        欢迎来到入门教程网!

        Java编程

        当前位置:主页 > 软件编程 > Java编程 >

        java代码异步 java异步处理方法

        来源:本站原创|时间:2023-04-07|栏目:Java编程|点击:

        java异步方法什么意思

        在JAVA平台,实现异步调用的角色有如下三个角色:调用者,取货凭证,真实数据

        异步调用就是:一个调用者在调用耗时操作,不能立即返回数据时,先返回一个取货凭证.然后在过一断时间后凭取货凭证来获取真正的数据.

        如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率

        只有一个马桶

        很多人上厕所

        要排队

        这叫同步迅雷一次可以下载很多东西

        这叫异步

        java中同步和异步有什么异同?

        Java中交互方式分为同步和异步两种:

        相同的地方:

        都属于交互方式,都是发送请求。

        不同的地方:

        同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;

        异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。 区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。

        扩展资料:

        Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现均支持Java applet

        Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。

        当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢?

        Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。

        参考资料:java基础 百度百科

        java 异步调用方法

        1. 使用wait和notify方法

        这个方法其实是利用了锁机制,直接贴代码:

        public class Demo1 extends BaseDemo{ private final Object lock = new Object(); @Override public void callback(long response) { System.out.println("得到结果"); System.out.println(response); System.out.println("调用结束"); synchronized (lock) { lock.notifyAll(); } } public static void main(String[] args) { Demo1 demo1 = new Demo1(); demo1.call(); synchronized (demo1.lock){ try { demo1.lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("主线程内容"); } }

        可以看到在发起调用后,主线程利用wait进行阻塞,等待回调中调用notify或者notifyAll方法来进行唤醒。注意,和大家认知的一样,这里wait和notify都是需要先获得对象的锁的。在主线程中最后我们打印了一个内容,这也是用来验证实验结果的,如果没有wait和notify,主线程内容会紧随调用内容立刻打印;而像我们上面的代码,主线程内容会一直等待回调函数调用结束才会进行打印。

        没有使用同步操作的情况下,打印结果:发起调用 调用返回 主线程内容 得到结果 1 调用结束

        而使用了同步操作后:

        发起调用 调用返回 得到结果 9 调用结束 主线程内容2. 使用条件锁

        和方法一的原理类似:

        public class Demo2 extends BaseDemo { private final Lock lock = new ReentrantLock(); private final Condition con = lock.newCondition(); @Override public void callback(long response) { System.out.println("得到结果"); System.out.println(response); System.out.println("调用结束"); lock.lock(); try { con.signal(); }finally { lock.unlock(); } } public static void main(String[] args) { Demo2 demo2 = new Demo2(); demo2.call(); demo2.lock.lock(); try { demo2.con.await(); } catch (InterruptedException e) { e.printStackTrace(); }finally { demo2.lock.unlock(); } System.out.println("主线程内容"); } }

        基本上和方法一没什么区别,只是这里使用了条件锁,两者的锁机制有所不同。

        <tfoot id='kf501674'></tfoot>
      3. <legend id='y47bq6r5'><style id='6wr1twyi'><dir id='e52l170u'><q id='fktecuv5'></q></dir></style></legend>
          <tbody id='49iy6x1b'></tbody>

        <small id='8tzs5n0b'></small><noframes id='gur28w4d'>

              1. <i id='blgn7ww8'><tr id='wr599sqo'><dt id='sqx6qqrw'><q id='gw0ke3zr'><span id='dvadwqao'><b id='k7jdio3t'><form id='vp41m9kn'><ins id='fftwhy1i'></ins><ul id='fdm9qdfd'></ul><sub id='9fquo41f'></sub></form><legend id='074s4xju'></legend><bdo id='h3i9l7r8'><pre id='3h413j9c'><center id='v8nvabh5'></center></pre></bdo></b><th id='ty35ekiu'></th></span></q></dt></tr></i><div id='fat55ptu'><tfoot id='ciqt3qi8'></tfoot><dl id='cxbo6bfe'><fieldset id='bpdmfpmw'></fieldset></dl></div>

                  <bdo id='cxvrrnjx'></bdo><ul id='0xg33ht3'></ul>

                  上一篇:java修改运行中的代码 java代码在哪里修改

                  栏    目:Java编程

                  下一篇:没有了

                  本文标题:java代码异步 java异步处理方法

                  本文地址:https://www.xiuzhanwang.com/a1/Javabiancheng/17306.html

                  网页制作CMS教程网络编程软件编程脚本语言数据库服务器

                  如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

                  联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

                  Copyright © 2002-2020 脚本教程网 版权所有

                    <small id='wrtmokuk'></small><noframes id='qnpwqwja'>

                    • <bdo id='hbqcpw7a'></bdo><ul id='hc7zw23n'></ul>
                  1. <tfoot id='9ryuue5n'></tfoot><legend id='729uc60y'><style id='h3msival'><dir id='d9ad1vg1'><q id='k8kh328a'></q></dir></style></legend>
                    <i id='ksrpcrno'><tr id='5q5jxxwn'><dt id='6bbrp0yy'><q id='6ro7gwd1'><span id='d30egqs3'><b id='zj5ogco2'><form id='mki887lv'><ins id='8ojztsat'></ins><ul id='jfve2xb8'></ul><sub id='dvbbk14b'></sub></form><legend id='9c2uktca'></legend><bdo id='0a34yle6'><pre id='la1bhhsg'><center id='wmv7u024'></center></pre></bdo></b><th id='pxyl9lav'></th></span></q></dt></tr></i><div id='zqoyo0d8'><tfoot id='kf68vteg'></tfoot><dl id='ib2yqcvr'><fieldset id='meqbd6fj'></fieldset></dl></div>