欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

java同步转化成异步_Java 如何把异步调用模拟成同步调用

发布时间:2023/12/15 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java同步转化成异步_Java 如何把异步调用模拟成同步调用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在某些时候,须要把异步调用模拟成同步调用的形态。例如,基于基于异步通讯的客户端须要同步调用。 :-)异步

要实现这个转换,能够有多种实现方法:this

1。很经常使用的方法,应用循环机制:spa

boolean flag = false;线程

public void methodA(){rem

System.out.println("Hello, waitting for response!");同步

while(!flag){it

System.out.println("waitting.........");io

try { Thread.sleep(1000); } function

catch (InterruptedException e) { class

e.printStackTrace();

}

}

System.out.prinln("Response handled........");

}

public void methodB(){

System.out.println("Get response!");

flag = true;

}

当响应线程收到响应信息后,就会调用methodB(),重设flag的值,以便methodA()能够退出循环,继续后面逻辑。

2。应用Object.wait()方法中断,等待通知。而后用Object.notify()或者Object.notifyAll()退出等待,继续逻辑

public class LockTest {

private Object locker = new Object();

private boolean flag = false;

/**

* Locking thread when it is invoked

*/

private void lock(){

try {

synchronized(this.locker){

locker.wait();

}

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* Unlocking thread which has been locked

*/

private void unLock(){

locker.notify();

}

/**

* remove binding locker

*/

public void update(){

this.flag = true;

synchronized(this.locker){

this.unLock();

}

}

/**

* test lock function

*/

public void test(){

System.out.println("Hello, this is testing for lock");

this.lock();

if(flag){

System.out.println("Testing is ok!");

}else{

System.out.println("Testing is failed!");

}

}

}

总结

以上是生活随笔为你收集整理的java同步转化成异步_Java 如何把异步调用模拟成同步调用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。