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

要实现这个转换,能够有多种实现方法: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 如何把异步调用模拟成同步调用相关推荐

  1. java socket 远程调用_使用Socket反射Java流操作进行方法的远程调用(模拟RPC远程调用)...

    写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...

  2. java 如何转化成机器指令_Java代码到底是如何编译成机器指令的

    白衣染霜花 编译器把一种语言规范转化为另一种语言规范的这个过程需要哪些步骤?回答这个问题需要参照<编译原理>,总结过程如下:        1)词法分析:读取源代码,一个字节一个字节的读进 ...

  3. java 并发 异步_Java并发 CompletableFuture异步编程的实现

    前面我们不止一次提到,用多线程优化性能,其实不过就是将串行操作变成并行操作.如果仔细观察,你还会发现在串行转换成并行的过程中,一定会涉及到异步化,例如下面的示例代码,现在是串行的,为了提升性能,我们得 ...

  4. java 数字翻译成英文_Java实现将数字日期翻译成英文单词的工具类实例

    本文实例讲述了Java实现将数字日期翻译成英文单词的工具类.分享给大家供大家参考,具体如下: package com.sunyard.etp.ag.util; import java.math.Big ...

  5. java xml文件内容替换_java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java importjava.io.FileInputStream;importjava.io.FileWriter;impo ...

  6. java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java import java.io.FileInputStream; import java.io.FileWriter; ...

  7. java转换2进制_java里怎样把文件转换成二进制

    展开全部 转换文件成为二进制数据并保存的32313133353236313431303231363533e78988e69d8331333365643661Java代码: 取出数据并还原文件到本地的j ...

  8. java object 转实体类_JAVA怎么把object怎么转换成实体类

    2 第二步调:编写测试代码-利用net.sf.json.JSONObject进行转换. 2.1.起首成立一个实体类Student set和get本身生当作 public class Student { ...

  9. java单词转化为数组_java中数组与List相互转换的方法

    1.List转换成为数组.(这里的List是实体是ArrayList) 调用ArrayList的toArray方法. toArray public T[] toArray(T[] a)返回一个按照正确 ...

最新文章

  1. 首届剑桥国际青年学术论坛开幕 第四范式携手DeepMind、华为共话AI技术革新
  2. EM算法和GMM(上)
  3. dot Net Frameworks中常见的设计模式
  4. 计算机win7无法安装,新机装不了Win7?照这个方法5分钟搞定!
  5. 【连载】如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(4)
  6. 转:标准C++中的string类的用法总结
  7. java制作风车图像的main方法_创意图形的绘制 会转的风车
  8. Ubuntu常用软件安装
  9. 紫川,网络小说的登峰造极之作
  10. 【中间件系列】Nacos注册中心妙用
  11. VC浏览器相关的学习(八)(截获IE网络访问)
  12. 假设检验,显著性,置信水平,p值,点估计
  13. IOS证书申请最新版2021
  14. 关于开源的RTP——jrtplib的使用(2)
  15. 电信流失客户特征分析及预测
  16. 赶紧来修炼内功~字符串函数详解大全(三)
  17. 【UVM基础】TLM1.0 通信机制(port/export/imp/analysis_xxx)快速上手指南
  18. MySQL 确定哪些是叶节点、分子节点、根节点
  19. DFT(离散傅里叶变换)
  20. 《疯狂JAVA讲义》学习笔记(一)

热门文章

  1. 一致性哈希算法与Java实现
  2. 《大型门户网站是这样炼成的!(Struts 2+Spring 2+Hibernate 3) 》
  3. [蓝桥杯][2013年第四届真题]危险系数(暴力+dfs)
  4. python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
  5. python3编码声明_python3编码问题汇总
  6. cstring判断是否包含子串_最长子串-滑动窗口
  7. golang func 入参为func_Golang函数常见用法
  8. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](4)
  9. 快放弃你的管家软件吧! Part 2 强制删除
  10. CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)