`
锅巴49
  • 浏览: 163539 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

回调机制

阅读更多

回调机制运用什么场景?

1、当你正在做事,但有个信息需要别人通知你,那个人很忙说你留个电话我,有消息我就通知你,你继续干你的事,两不误。可以解决阻塞问题。

 

2、在某个条件满足后去执行未知的逻辑,因为未知,所以预留接口待外界传入类,有点模板方法的意思。这个可以解耦。

 

写一个例子:

 

场景:某员工正在拍卖现场出价,老板说:你按我的指示出价,如果我有变动会通知你,你再改变出价。

分析:员工要不停的出价,不能因为等待老板的电话而停止出价。我们将员工实现callback接口,注入另外个线程,当老板有电话时将信息传入员工,这样不会影响员工工作。

 

代码:

package my.test.callback;

/**
 * 
 * 描述 回调接口
 *
 * @author 锅巴
 * @version 1.0 2010-10-15
 */
public interface IMessageCallBack {

    void receiveMessage(String message);
}

 

 

package my.test.callback;

/**
 * 
 * 描述 员工并实现回调接口
 *
 * @author 锅巴
 * @version 1.0 2010-10-15
 */
public class Employee implements IMessageCallBack{
    
    private int value = 8888;
    
    /**
     * 不断的出价
     */
    public void doWork(){  
        while(true){
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("value:" + value);
        }
    }
    
    
    

    /**
     * 回调方法,接收老板指令
     */
    public void receiveMessage(String message) {
        // TODO Auto-generated method stub
        value = Integer.parseInt(message);
    }
}

 

package my.test.callback;

import java.util.Random;

import org.springframework.beans.factory.InitializingBean;


/**
 * 
 * 消息监听器
 *
 * @author 锅巴
 * @version 1.0 2010-10-15
 */
public class Messagelisten implements InitializingBean{

    private IMessageCallBack messageCallBack;
    
    public void init(){
          (new Thread(new MessageCreate(messageCallBack))).start();
    }

    public void setMessageCallBack(IMessageCallBack messageCallBack) {
        this.messageCallBack = messageCallBack;
    }

    public void afterPropertiesSet() throws Exception {
        // TODO Auto-generated method stub
        if(messageCallBack == null){
            throw new IllegalAccessException("error: messageCallBack is null");
        }
    }  
}


class MessageCreate implements Runnable{

    
    private IMessageCallBack messageCallBack;
    
    public MessageCreate(IMessageCallBack messageCallBack){
        this.messageCallBack = messageCallBack;
    }
    
    public void run() {
        // TODO Auto-generated method stub
        String message = null;
        while((message = listen()) != null){
            messageCallBack.receiveMessage(message);
            
        }
    }
    
    private String listen(){
        
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("---------- listen -----------");
        Random random = new Random();
        if(random.nextInt(10) > 5){
            return String.valueOf(random.nextInt(10000));
        }
        return null;
    }
    
}

 

配置文件

<bean id="employee" class="my.test.callback.Employee"/>
	
<bean id="messagelisten" class="my.test.callback.Messagelisten" init-method="init">
	<property name="messageCallBack" ref="employee"/>
</bean>

 

Test

  

package my.test.user.api;

import my.test.callback.Employee;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class CallBackTest {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("callback.context.xml");
        Employee employee = (Employee)context.getBean("employee");
        employee.doWork();
    }
}

 

 

 

 

0
0
分享到:
评论

相关推荐

    android中的回调机制

    Android 中的回调机制 Android 中的回调机制是一种方法调用机制,类似于 C++ 语言中的指针传递,使其它类或方法掌握另一个类的句柄。Java 中的回调是通过接口或内部类实现的。 回调机制的实现需要两个类和一个接口...

    Java回调机制

    Java回调机制是软件设计模式中的一种,特别是在Java和Android开发中广泛应用。回调允许服务端对象在执行特定操作后,通知并调用客户端对象的方法。这种机制使得程序可以在异步环境中运行,即服务端处理完一个任务后...

    Java基础核心理解+什么是回调即回调机制讲解

    ### Java基础核心理解+什么是回调及回调机制讲解 #### 一、回调机制的引入与应用场景 在软件开发中,特别是面向对象编程语言如Java中,模块间的交互是至关重要的。根据调用方式的不同,可以将模块间的交互分为三种...

    回调机制的实现,主要介绍回调机制的实现过程

    回调机制是一种软件设计模式,它允许一个程序在执行过程中调用另一个程序提供的功能,并且这个被调用的函数会在特定事件发生时返回控制权给原始的调用者。回调机制通常用于异步处理、事件通知、功能扩展等多种场景。...

    Java/Android回调机制小示例

    在编程领域,回调机制是一种常见的设计模式,尤其在Java和Android开发中被广泛使用。回调允许我们定义一种在特定事件发生时执行的代码块,它能够帮助实现异步操作的处理,提高程序的灵活性和可扩展性。在这个“Java/...

    BREW 回调机制

    在BREW(Binary Runtime Environment for Wireless)平台上,回调机制是一种核心机制,它使得开发者能够以异步方式处理各种操作,尤其是涉及到网络通信、定时器或其他需要等待结果的事件。回调机制的关键在于,当...

    handler回调机制 demo

    在Android开发中,Handler回调机制是用于解决线程间通信的核心技术之一,它与Looper和Message紧密相连,共同构建了Android的消息处理系统。本篇将深入解析Handler回调机制,并通过提供的"handler的回调机制"DEMO来...

    回调函数与回调机制.docx

    回调函数和回调机制是软件开发中常用的设计模式,主要用于实现异步操作、事件处理和定制化工作流程。回调函数是一个用户定义的函数,它作为参数传递给另一个函数,由该函数在适当的时间调用。这种设计允许将某些特定...

    java回调机制1

    Java回调机制是一种编程模式,它允许一个对象在特定事件发生时调用另一个对象的方法。在上述例子中,回调机制的概念逐渐展开,通过一个简单的幼儿园加法故事进行解释。 首先,我们有`Student`类,它有一个`fill...

    Java异步回调机制实例解析共5页.pdf.zip

    Java异步回调机制是Java编程中一种常见的处理方式,它主要用于提高程序的执行效率和响应速度,尤其是在处理I/O密集型任务或者网络通信时。在Java中,异步回调允许程序在执行耗时操作时,不阻塞主线程,而是立即返回...

    websocket 实现实时推送的例子(工厂模式,回调机制)

    在这个"WebSocket 实现实时推送的例子(工厂模式,回调机制)"中,我们将深入探讨如何利用WebSocket来构建一个实时推送系统,并结合工厂模式和回调机制来增强其灵活性和可维护性。 首先,让我们了解一下**工厂模式*...

    浅谈JAVA回调机制1

    Java回调机制是一种编程概念,其核心在于一个对象(A)调用另一个对象(B)的方法,而这个方法内部又反过来调用A对象的另一个方法,形成一种链式反应。回调在多线程、异步处理和事件驱动编程中非常常见,因为它允许...

    android回调机制的简单实现demo

    在Android开发中,回调机制是一种常见的事件处理方式,它允许我们定义一个接口或者抽象方法,当特定事件发生时,系统会调用这个接口或方法,从而通知我们的代码进行相应的处理。这里,我们通过一个简单的"android回...

    回调机制及其在Android开发中的应用.pdf

    【回调机制】 回调机制是计算机程序设计中的一种通信机制,它允许被调用的函数或方法反过来调用调用者提供的代码。这种机制在多线程编程、事件驱动编程和异步处理中尤其常见。回调是通过在调用函数时传递一个函数...

    回调机制及其在Android应用开发中的应用.pdf

    【回调机制】 回调机制是软件设计中的一种通信方式,它允许被调用的方法或函数在执行完特定操作后,反过来调用调用者提供的另一个方法。这种双向调用模式在处理异步操作或者需要在特定事件发生时进行响应的场景中...

    Android的回调机制

    详细介绍Android的回调机制,例举了大量的实例,有助于初学者的学习

    利用同步回调机制攻击Android的系统服务和应用.pdf

    在Android系统中,同步回调机制是一种常见的组件交互方式,它允许应用程序和服务之间进行通信和数据交换。然而,这种机制也可能成为安全漏洞的来源,因为恶意攻击者可以利用它来对系统服务和应用进行攻击。本文将...

    两个经典例子让你彻底理解java回调机制(csdn)————程序.pdf

    Java回调机制是一种编程模式,它允许一个对象在另一个对象完成特定操作后被通知或调用。这种机制在软件设计中非常常见,特别是在处理异步操作和事件驱动编程中。通过回调,一个对象(调用者)可以注册一个回调函数或...

Global site tag (gtag.js) - Google Analytics