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!");

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python系统自学_如何系统地自学python

可以按照黑马程序员整理的这套教程来学习:一、Python入门这一阶段,你需要学习的知识点:如果学习能力还不错的话,这一阶段,只需要一个多月的时间Python视频教程:1、重磅级教程推荐,讲的非常好Python入门教程完整版(懂中文就能学会):http://pan.baidu.com/s/1miwZ1WW2、Python基础…

java实现加减乘除运算符随机生成十道题并判断对错_简单小程序——产生三十道小学四则运算题目...

题目要求程序可以生成三十道小学四则运算题目。因为要随机生成题目,则需要产生随机数,因此我上网搜索了生成随机数的方法,选择了使用Random类得到规定范围内的随机数。因为一个运算需要三个元素,两个参与运算的数字,一…

proteus跑马灯仿真_不花费一分钱,实现跑马灯编程实验

建立仿真工程初学者学习单片机编程,并不需要去网上买个开发板才能开始编程做实验,若是想先了解,可以先用proteus仿真软件来做实验,Protues软件具有其它EDA工具软件的功能。这些功能是:1.原理布图2&#xff…

java异常 说服力_异常常见面试题目

1) Java中什么是Exception?这个问题经常在第一次问有关异常的时候或者是面试菜鸟的时候问。我从来没见过面高级或者资深工程师的时候有人问这玩意,但是对于菜鸟,是很愿意问这个的。简单来说,异常是Java传达给你的系统和程序错误的方式。在ja…

linux下python脚本print中文显示不正确_在终端上运行python脚本,没有打印或显示-为什么?...

通过艰苦的学习Python,第25课。我尝试执行脚本,结果如下:myComp:lphw becca$ python l25myComp:lphw becca$终端中不打印或显示任何内容。这是密码。def breaks_words(stuff):"""This function will break up words for us.&q…

美团科技 Java工程师_美团网java工程师面试都会问哪些问题?

美团网java工程师面试主要考察面试者的专业知识,涉及TCP/IP 线程、synHashMap底层、进程关系、servlet生命周期、pringMVC单例异常、Object方法、ConcurrentHashMap、java并发包、线程池、zookeeper、SpringMVC、JMM、GC等,问的问题很细致,专…

线性共轭梯度法python_python实现的共轭梯度法

共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一&#xff…

java原子操作cas_java并发编程系列二:原子操作/CAS

什么是原子操作不可被中断的一个或者一系列操作实现原子操作的方式Java可以通过锁和循环CAS的方式实现原子操作CAS( Compare And Swap ) 为什么要有CAS?Compare And Swap就是比较并且交换的一个原子操作,由Cpu在指令级别上进行保证。为什么要有CAS&…

power bi 日期计算_PowerBI 动态计算周内日权重指数

在很多行业,尤其是零售业,其销售规律在一周内呈现一定的特点。例如:平时有一种购买特点;周末有一种购买特点。故而一周内的星期一到星期日呈现一定的权重分布。周内日权重分布1 到 12 表示月序号;1 到 7 表示周内日。这…

updatechecker.java_解决ehcache的UpdateChecker问题

问题描述项目中用了ssh框架,每次启动tomcat的时候都特别慢,会在这样一句话下面停留很久[2016-01-08 23:55:51,517 INFO UpdateChecker.java:doCheck:98] ---- New update(s) found: 2.6.5 [http://www.terracotta.org/confluence/display/release/Releas…

vb 6.0 获取重定向的url_接口测试:A07_HttpRunner重定向_04_解决方案

A07_HttpRunner重定向_04_解决方案既然 HttpRunner 是对 requests 模块的封装,那我们就试图从 requests 中寻找答案,在其官网中发现了对重定向的描述和处理:地址:http://cn.python-requests.org/zh_CN/latest/user/quickstart.htm…

java wordcount程序_[java]wordcount程序

词数统计系统。作业解析:这次作业的内容是从本地读取一个程序代码,计算出这个程序中的行数,单词数,也可进行拓展。实现语言:java编程思路:程序是由各种单词和符号组成的,单词包括关键字&#xf…

python怎么创建虚拟环境_anaconda怎么创建python虚拟环境

anaconda创建python虚拟环境的方法是:执行命令【conda create -n your_env_name pythonxx】即可。如果我们要激活虚拟环境,执行命令【activate your_env_name】即可。具体方法如下:创建python虚拟环境conda create -n your_env_name pythonxx…

java servlet深入理解_java 步步惊心 (web ) 深入理解servlet

用户在浏览器中输入一个网址回车,浏览器会向服务器发送一个HTTP请求。服务器端程序接受这个请求,并对请求进行处理,然后发送回应,浏览收到回应,再把回应的内容显示出业。这种请求-响应模式就是典型web应用程序访问过程…

robot ride edit 页面不显示_【框架】robot-framework预研

隔壁组在使用robot framework进行自动化测试,这玩意之前我没接触过,决定来预研一下这个auto test框架。背景一个好的框架,背后少不了一个牛逼的团队或组织(金主爸爸),也是判断是否值得投入时间学习的一个参考因素(虽然强如塞班系统…

java 多态 降低耦合_java多态

Java多态就是为了降低耦合,方便我们开发的一种特性。比如我写了一个动物的接口。然后我通过接口实现了猫和狗这个类。在我需要使用的时候我可以这样实例化对象动物 w new 猫。这就是向上转型。这里就有一点疑问了,我们开发人员为啥不直接写个猫和狗的类…

jap和java有关系吗_hibernate与jpa有什么区别和联系?

~JPA Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。Hibernate,当今很流行的ORM框架,是JPA的一个实现,但是其功能是JPA的超集。JPA和Hibernate之间的关系,可以简单的理解为JPA是标…

python找房源_Python租房信息分析!找到最适合自己的房源信息!

原标题:Python租房信息分析!找到最适合自己的房源信息!租房信息分析import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfile_data pd.read_csv("./data/链家北京租房数据.csv")file_dat…

php 任意字符串_php 生成任意长度字符串的类(只含有数字 只含有字母 混合数字和字母)...

[php]代码库/** 生成随机字符串的类,默认只包含数字、大小写字母*/class randomString {/** 生成的字符串包含的字符设置*/const NUMERIC_ONLY 1; //只含有数字const LETTER_ONLY 2; //只含有字母const MIXED 3; //混合数字和字母/** 用户传入变量,分…

python添加时间戳_在python中添加时间戳

这两个解决方案(AFAIK)都可以在python的任何2.x版本上运行(因此保证了相当多的向后兼容性)仅依赖于regex库的实现:import redata 2011-03-07 0:27:412011-03-06 0:13:412011-03-05 0:17:402011-03-04 0:55:402011-05-16 0:55:402011-05-16 0:55:402011-07-16 0:55:…