精华内容
下载资源
问答
  • pybind 回调 多线程 异常.pdf
  • 摘要:C#源码,系统相关,异步回调,多线程,委托 C#异步回调C# 异步 回调 阻塞 多线程 委托融合在一起的简单例子,仅供参考。 运行环境:Visual Studio2010
  • 主要介绍了Java多线程回调方法实例解析,具有一定参考价值,需要的朋友可以了解下。
  • 主要介绍了python回调函数中使用多线程的方法,需要的朋友可以参考下
  • Java多线程实现 自定义 的 回调函数. 手写 完成,亲测 完成,可以 直接运行,Demo ,具有一定参考价值,供大家阅读 下载,谢谢
  • PB 回调函数,多线程

    热门讨论 2010-05-14 17:07:19
    pb实现回调函数实现多线程应用 pb90的代码 在此基础上,可写成日志组件,大大提高系统性能。 已组件化,根据demo的用法,直接可以引用到业务程序中
  • java多线程回调方法的理解

    万次阅读 2016-09-12 13:07:42
    java多线程使用回调方法的一个例子,可以加深对java多线程回调方法的理解

    Java多线程回调方法的理解

     

     

    所谓回调,就是客户程序C调用服务程序S中的某个方法A,然后S又在某个时候反过来调用C中的某个方法B,对于C来说,这个B便叫做回调方法。


    下面看一个实际例子来理解:

    本示例设置一个提问者,一个回答者,而回答者需要回答提问者一个很深奥的问题时,这时需要很多时间去查找,提问者又开始做其他的事情,

    等回答者找到答案后,再把答案告诉提问者。


    一.提问者的类

    涉及到长时间的思考,要sleep,要继承Thread

     

    package com.xykj.thread;
    public class XiaoZhang extends Thread {
        // 回答1+1,很简单的问题不需要线程
        public int add(int num1, int num2) {
           return num1 + num2;
        }
     
        // 重写run方法
        @Override
        public void run() {
           // 回答地球为什么是圆的
           askquestion();
           super.run();
        }
     
        // 回调接口的创建,里面要有一个回调方法
        //回调接口什么时候用呢?这个思路是最重要的
        //
       
        public static interface CallPhone {
           public void call(String question);
        }
     
        // 回调接口的对象
        CallPhone callPhone;
     
        // 回答地球为什么是圆的
        private void askquestion() {
           System.err.println("开始查找资料!");
           try {
               sleep(3000);// 思考3天
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
           // 把答案返回到回调接口的call方法里面
           if (callPhone!=null) {//提问者实例化callPhone对象,相当于提问者已经告诉我,我到时用什么方式回复答案
               //这个接口的方法实现是在提问者的类里面
               callPhone.call("知道了,!!!~~~~百度有啊");
           }     
        }
    }
     



    二.提问者的类



    package com.xykj.thread;
    import com.xykj.thread.XiaoZhang.CallPhone;
    public class MainClass {
        /**
         * java回调方法的使用
         * 实际操作时的步骤:(以本实例解释)
         * 1.在回答者的类内创建回调的接口
         * 2.在回答者的类内创建回调接口的对象,
         * 3.在提问者类里面实例化接口对象,重写接口方法
         * 2.-3.这个点很重要,回调对象的实例化,要在提问者的类内实例化,然后重写接口的方法
         * 相当于提问者先把一个联络方式给回答者,回答者找到答案后,通过固定的联络方式,来告诉提问者答案。
         * 4.调用开始新线程的start方法
         * 5.原来的提问者还可以做自己的事
         * */
        public static void main(String[] args) {
           // 小王问小张1+1=?,线程同步
           XiaoZhang xiaoZhang = new XiaoZhang();
           int i = xiaoZhang.add(1, 1);//回答1+1的答案
     
           // 问小张地球为什么是圆的?回调方法的使用
           //这相当于先定好一个返答案的方式,再来执行实际操作
          
           // 实例化回调接口的对象
           CallPhone phone = new CallPhone() {
               @Override
               public void call(String question) {
                  //回答问题者,回答后,才能输出答案
                  System.err.println(question);
               }
           };
          
           //把回调对象赋值给回答者的回调对象,回答问题者的回调对象才能回答问题
           xiaoZhang.callPhone = phone;
          
           System.out.println("交代完毕!");
           //相关交代完毕之后再执行查询操作
           xiaoZhang.start();
          
           //小王做自己的事!
           System.out.println("小王做自己的事!");
        }
     
    }

     

     

    运行结果:




    可以看到:肯定是要提问者先交代完回答者怎样的方式回答问题,

    然后提问者再做自己的事,回答者开始思考答案。

    这里交代联络方式具体表现就是在提问者的类里面实例化回调接口和实现回答的方法。

     

     其中大部分解释都在代码中有体现了。

     

     

    展开全文
  • 在写一个unity的项目网络层,用c#的异步socket,BeginSend,EndSend,BeginReceive,EndReceive,但是发现回调的方式是多线程回调: 下面的代码我在回调的地方打印出线程id,发现不一样: 如果是多线程回调,那么...
  • android jni多线程回调

    2013-05-16 15:51:13
    JNI调用比较简单,根据JNI给出的实例,本内容主要讲多线程使用回调步骤:主要说明参照我的博文 http://blog.csdn.net/inr12345/article/details/8935350
  • 轻松学会JNI层多线程回调java方法,解决在c/c++层时,多线程环境下用过findClass异常问题。
  • C++JNI多线程回调java

    2014-01-14 11:01:41
    C++使用JNI多线程回调java代码例子,因为依赖了我的一些库和头文件,没有传上去,编译不过,但是大家可以参考一下,如何使用C++多线程调用java函数
  • python event多线程回调

    千次阅读 2017-11-19 14:23:42
    python event多线程回调


     

    from utils import concurrentQueue

    mqueue =[]

    class paramc():
       
    def __init__(self,pic,event,birth):
           
    self.pic=pic
           
    self

    展开全文
  • Java多线程回调接口Callable

    千次阅读 2018-04-30 19:13:39
    Java 5 引入了多线程编程的一个新方法,不需要直接new Thread () 创建一个新的线程。只要创建一个 ExecutorService 的线程池,并将实现了 Callable 接口的任务(task)提交到线程池,就能得到带有回调结果的Future...

        Java 5 引入了多线程编程的一个新方法,不需要直接new Thread () 创建一个新的线程。只要创建一个 ExecutorService 的线程池,并将实现了 Callable 接口的任务(task)提交到线程池,就能得到带有回调结果的Future对象,通过操作Future得到结果,接下来,我们通过一个实例来学习这一部分的知识。

        实例目的:通过两个线程,返回一个整型数组中的最大值。

        首先,代码实现查找最大值的任务类:FindMaxTask

    //导入util中Callable的包
    import java.util.concurrent.Callable;
    //实现Callable,这里的Integer表示回调的对象类型
    //本例子返回的是整型数组中的最大值,所以为Integer类型
    public class FindMaxTask implements Callable<Integer> {
    
    	//我们所需要的数据,一个整形数组,数组的开始,数组的结束
    	private int[] data;
    	private int start;
    	private int end;
    	//通过构造函数,初始化我们需要查的内容
    	public FindMaxTask(int[] data, int start, int end) {
    		this.data = data;
    		this.start = start;
    		this.end = end;
    	}
    
    	// 实现Callable中的方法,写入查找逻辑
    	@Override
    	public Integer call() throws Exception {
    		int max = Integer.MIN_VALUE;
    		for (int i = start; i < end; i++) {
    			if (data[i] > max)
    				max = data[i];
    		}
    		return max;
    	}
    
    }

           接下来,来实现创建线程池,以及提交任务,返回Future对象并对其进行操作:

    //导入所需要的包
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    public class MultithreadedMaxFinder {
    
    	//定义一个通过多线程查找最大值的静态函数
    	public static int max(int[] data){
    		//对传递进来的整形数组进行判断
    		if(data.length == 1)
    			return data[0];
    		else if(data.length == 0)
    			throw new IllegalAccessError();
    		
    		//将数据分为两份
    		FindMaxTask fmt1 = new FindMaxTask(data, 0, data.length/2);
    		FindMaxTask fmt2 = new FindMaxTask(data, data.length/2, data.length);
    		//创建两个线程的线程池
    		ExecutorService service = Executors.newFixedThreadPool(2);
    		//向线程池提交Callable任务,并返回Future对象
    		Future<Integer> future1 = service.submit(fmt1);
    		Future<Integer> future2 = service.submit(fmt2);
    		try {
    			//关闭线程池,不影响 线程进行,通知线程池没有更多的线程了而已
    			service.shutdown();
    			//从上一个类,我们可以知道,FindMaxTask的call()方法返回的类型是int
    			//所以future对象的get()返回的结果也就是call的返回结果
    			//比较两个结果,返回数组的最大值
    			return Math.max(future1.get(), future2.get());
    			
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    			return 0;
    		} catch (ExecutionException e) {
    			e.printStackTrace();
    			return 0;
    		}
    	}
    
    }

        我们来测试一下

    public class Test {
    
    	public static void main(String[] args) {
    		
    		int[] data = {1,3,4,2,9,8,6};
    		System.out.println("data数组的最大是为:"+MultithreadedMaxFinder.max(data));
    
    	}
    
    }

        实验的结果:

    data数组的最大是为:9

        总结一下,这只是多线程处理的一下小小的例子,如果你的线程池提交的任务不需要回调,那么你可以实现 Runnable 接口而不用使用Callable接口,然后直接submit就可以了,不需要返回Future对象。最后是shutdown方法,方法的机制是告诉线程池对象,没有更多的任务需要提交了,等到执行完所有任务后,就关闭了。

        更多的多线程知识,敬请关注更新,如有问题,以及博客错误,可以在下方留言共同讨论。


    展开全文
  • ActiveX多线程回调JS函数,涉及到ActiveX的事件处理,测试页面,注册脚本,对于OCX初学者来说最实用的教材!
  • 通过JNI接口静态注册的native方法去创建线程,同时提供native回调Java的方法。通过这个框架可以去实现线程监听某一个状态,然后回调Java的方法(如发消息去通知顶层,实现显示)
  • Delphi 回调函数 线程

    千次阅读 2012-03-26 14:48:51
    觉的好简单,什么都没有,只是在同一个单元内,利用了DELPHI的多线程调用回调函数,高手别见笑哈!下次肯 定要多加点东西完善滴,这次只是熟悉一下实现回调的整个过程。 interface uses  Windows, Messages, ...
    今天在DELPHI上随便编写了个回调函数的例子,怕以后忘了,赶紧给它给记下来,呵呵。 
    

    觉的好简单,什么都没有,只是在同一个单元内,利用了DELPHI的多线程调用回调函数,高手别见笑哈!下次肯

    定要多加点东西完善滴,这次只是熟悉一下实现回调的整个过程。

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
      type PFCALLBACK = function(Param1:integer;Param2:integer):integer;stdcall;
     // 定义回调函数的类型
    var
      Form1: TForm1;
      gCallBack:PFCALLBACK;
      function CBFunc(Param1:integer;Param2:integer):integer;stdcall;
    implementation
    //回调函数需要定义为全局
    {$R *.dfm}


    ///实现回调函数的功能
    function CBFunc(Param1:integer;Param2:integer):integer;
    var i:integer;
    begin
    //messagebox(application.Handle,'回调函数','提示信息',mb_ok);
    for i:=0 to 100 do
    begin
    sleep(100);
    self.ListBox1.Items.Add('回调函数');
    end;
    end;

    function MyThreadFunc(P:pointer):Longint;stdcall;
    begin
    gCallBack(0,1);//简单传个参数
    end;
    procedure testpro ;
    var i:integer;
       hThread:Thandle;//定义一个句柄
      ThreadID:DWord;
    begin
    for i:=0 to 4 do
    begin
    messagebox(application.Handle,'123','提示信息',mb_ok);
    if (i=2) then
    begin
    hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);//利用这种线程怎么说呢,肯定方便啦,但是
    //肯定功能上受到好多限制,所以啊,自己写,下次贴个上来
    end;
    end;
    end;

    function TestCallBack( Func:PFCALLBACK ):integer;
    begin
    gCallBack:=Func;
    testpro;
    end;


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    //testpro;
    TestCallBack(@CBFunc);
    end;


    procedure TForm1.Button2Click(Sender: TObject);
    begin
    self.ListBox1.Clear;
    end;


    end.
    使用回调函数需要注意的地方:
    type PFCALLBACK = function(Param1:integer;Param2:integer):integer;stdcall;
     // 定义回调函数的类型
     function CBFunc(Param1:integer;Param2:integer):integer;stdcall;
    //全局函数定义,指向函数的函数,指针!!!名字可以随便取,但参数之类的需要与定义
    //的函数类型一致。
     function CBFunc(Param1:integer;Param2:integer):integer;
    //写该函数体就没什么好说拉
    function TestCallBack( Func:PFCALLBACK ):integer;
    //传递回调函数的入口地址,最重要啦!

    展开全文
  • 线程回调demo

    2017-12-23 20:21:33
    java贤线程回调,包括解析,直接可以运行,不可以运行直接联系我,学Android基础
  •      JNI/NDK入门指南之JNI多线程回调Java方法 背景   假设现在有这么一个业务需求,我们需要通过JNI在本地方法中干一件耗时操作,干完以后再通知Java层。这个实现逻辑非常简单,就是我们可以在本地...
  • ros多线程回调

    2019-07-04 14:32:48
    https://blog.csdn.net/sunanger/article/details/53283327
  • 在C++代码中要调用C++编写的dll中的一个函数,并传递一个回调函数(很明显,这里应该传递一个委托),C++函数在内部通过一个额外的线程在后台运行,完成工作后通过这个回调函数通知前台的C++代码。。。。 【问题】 ...
  • c# 实现多线程的操作,轮询等待回调等异步操作,适合初学者的源码
  • 下面我用代码使用Thread类实现线程等待,回调,前台线程/后台线程 首先我们需要先定义一个比较消耗资源的方法用来跑线程 /// <summary> /// 一个比较耗时耗资源的私有方法 /// </summary> /// <param...
  • 高并发epoll监听,多线程回调处理消息源码。可以直接编译运行。
  • jni 回调c++中socket接收数据到java实例代码
  • NDK学习( 三),多线程与异步回调

    千次阅读 2017-02-27 16:45:44
    场景:在Java中传递任意类型参数,在JNI中新开子线程,将传入的参数处理后回调Java中的方法 技术点: 1、在JNI中新开子线程并传递参数 2、在子线程回调Java方法(误区:JNIEnv指针可以共享) 对于技术点1...
  • 曾几何时,有多少人听到了多线程就某花一紧,听到了线程的同步就感觉昏昏欲睡。那我们今天就聊一聊我的理解。线程是什么?Java中常用到的新建线程的场景?以及多线程和线程池的概念,最牛逼的还是要说清楚线程的同步...
  • 1.js中多线程-单线程, 同步-异步,阻塞-非阻塞, 回调函数的关系理解 //2018.12.12 1.多线程/单线程 简单理解为: 多线程:程序可以同一时间做几件事. 单线程:程序同一时间只能做一件事. 在...
  • Delphi 回调函数及线程使用回调函数

    千次阅读 2019-02-25 10:18:58
    原因:在写线程时,用beginThread函数和creatthread函数可以实现函数调用及被调用函数的参数传递(用...在用线程类的时候,用回调函数的方法时,没法传递被调用函数参数,故写此文。下文自己的demo,测试传递readCo...
  • 这里面有几个非常好的例子哦,和大家共享下。反正回复了就可以拿积分,哈哈

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 283,691
精华内容 113,476
关键字:

回调多线程