当前位置:首页 > 科技动态 > 正文

java多线程线程池异步返回结果(java多线程返回结果)

java多线程线程池异步返回结果(java多线程返回结果)

如何在java中获取线程异步执行之后的结果 在实际工作中,我们通常将方法A以interface或者内部类的形式来实现,然后把包含有A的类的对象引用传递到观察者中。在ma...

如何在java中获取线程异步执行之后的结果

在实际工作中,我们通常将方法A以interface或者内部类的形式来实现,然后把包含有A的类的对象引用传递到观察者中。

在main方法中创建一个数组。所有线程类的构造方法都需要一个数组做参数。线程体结束时给数组中的某个元素赋值。public void run() { ...a[i] = ...;} main方法中等待所有线程结束后打印数组。

但是通过 Thread、Runnable 实现 run 方法创建的线程是无法获取返回结果的,原因是线程方法 run 本身是没有返回值的。但是在很多场景中,我们是需要 异步执行的同时获取其线程执行的返回结果的。

Java向线程传递数据的三种方法

1、在《向线程传递数据的三种方法》一文的例子中通过Work类的process方法向线程中传递了计算结果,但同时,也通过process方法从线程中得到了三个随机数。因此,这种方法既可以向线程中传递数据,也可以从线程中获得数据。

2、线程之间允许共享一些参数变量,你说的不同数目的参数,是不是可以用ArrayList或者数组来解决。还有一种就是类似于main函数的形式:public static void test(Object...objects) { } 可变参数,jdk5以上支持。

3、wait,notify等机制 或使用pipeInputStream和pipeOutputStream 线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种:1) 产生(New):线程对象已经产生,但尚未被启动,所以无法执行。

4、Java多线程实现方式主要有三种:继承Thread类。实现Runnable接口。使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。

5、线程之间数据是没法传递的,但是线程之间是可以通信的,在java中,在同步块中或者同步方法中,使用notify、wait方法可以实现线程的同步与互斥。

java多线程的问题为何输出结果只有一个?

java中 synchronized同步处理后,代表该线程是同步的,即多线程访问时,无法同时有两个或以上线程进行访问。

其实这个是多线程的 只不过现象不明显而已,在线程启动前,main函数就已经执行完了。

最好将同步机制贴出来。应该是操作了主线程中的变量,锁定之后造成后面两个线程的等待。

是匿名对象的原因,匿名对象不是强引用,对象声明生命周期短,当第一条线程执行run之后,二三四条线程应该是被虚拟机回收了。

Java回调以及如何获取线程的执行结果

会主动通知客户方(即调用客户方的接口)。异步调用实现是回调的一种情况,比如方法可以提前返回,具体的逻辑执行可以在另外一个线程中,执行完成后,由这个线程来回调,负责通知调用方。

在main方法中创建一个数组。所有线程类的构造方法都需要一个数组做参数。线程体结束时给数组中的某个元素赋值。public void run() { ...a[i] = ...;} main方法中等待所有线程结束后打印数组。

大多数人会采取比较常见的一种方法就是将线程中要返回的结果存储在一个字段中,然后再提供一个获取方法将这个字段的内容返回给该方法的调用者。

由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。

java中线程池的监控可以检测到正在执行的线程数。通过线程池提供的参数进行监控。线程池里有一些属性在监控线程池的时候可以使用 taskCount:线程池需要执行的任务数量。completedTaskCount:线程池在运行过程中已完成的任务数量。

最新文章