我是靠谱客的博主 幸福画板,最近开发中收集的这篇文章主要介绍java异步方法转同步_推荐在Java中将同步方法转换为异步方法的更好方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一个类中有一些同步运行的方法。我希望它们异步运行,第一个想法是包装它,并使用switch枚举确定应调用哪个函数。但是对于每个调用的方法,我都需要包装器类中有一个新方法和一个新的枚举。看起来像这样:

public class QueuedShow implements InterfaceShowAlert, Runnable {

private Class Action {

String param1;

public static enum ActionEnum{

NEW, CHECK, UPDATE, DELETE, DISPLAY;

}

public ActionEnum todo;

public Action(ActionEnum todo, Object param){

this.todo=todo;

this.param1=param;

}

}

private BlockingQueue actionList;

public void run(){

while(true){

Action action=actionList.take(); //THIS waits until queue isn't empty

switch(action.todo){

case NEW: //Call original function

....

}

}

}

public void new(String param){

actionList.add(new Action(NEW, param));

}

}

然后,我了解了反思,并有了一个新主意。那就是使用字符串而不是直接方法调用来调用方法。包装类读取并解析字符串,并使用反射获取类和包含方法。它将参数和Method对象放入一个类,并放入一个队列中。现在,该类使用Method.invoke(params)而不是使用枚举进行切换。但是,这样做的问题是丢失了编译器时间类型检查。

当然,所有这些方法仅适用于无效的方法,但是我们当然也可以使用Future类返回值。

现在有任何已经实现将同步调用转换为异步调用的框架,或者您知道执行此操作的任何其他方法。

最后

以上就是幸福画板为你收集整理的java异步方法转同步_推荐在Java中将同步方法转换为异步方法的更好方法的全部内容,希望文章能够帮你解决java异步方法转同步_推荐在Java中将同步方法转换为异步方法的更好方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部